Как реализовать распознаватели жестов в OS X?

Я довольно много сделал с распознавателями жестов для iOS, но теперь я работаю в OS X и теряюсь.

Я хочу дублировать функциональность, которая существует, например, в Finder, где вы можете провести двумя пальцами (на вашей волшебной мыши), чтобы перейти назад / вперед по дереву каталогов.

У меня есть приложение на основе NSWindow, которое очень похоже на Finder. Раньше я использовал приложения, которые позволяют создавать собственные распознаватели жестов, поэтому я знаю, что это возможно, но я не вижу никакой документации по этому поводу.

Что мне нужно сделать, чтобы реализовать эти жесты?


person Westley    schedule 29.05.2012    source источник


Ответы (3)


Вы можете прочитать о Обработка событий трекпада в руководстве по обработке событий Cocoa. Система может обнаруживать некоторые предопределенные жесты (пролистывание, поворот и т. д.), или вы можете прослушивать необработанные события касания, которые проходят вверх по цепочке NSResponder, как обычные события мыши.

person Морт    schedule 05.06.2012

Теперь у Mac есть:

  • NSClickGestureRecognizer
  • NSMagnificationGestureRecognizer
  • NSPanGestureRecognizer
  • NSPressGestureRecognizer
  • NSRotationGestureRecognizer

Доступно и в раскадровках.

person Rudolf Adamkovič    schedule 16.08.2016

Похоже, в CZKit также есть класс Event Recognizer. https://github.com/CarterA/CZKit

Я не использовал это (пока), так что YMMV.

person livingtech    schedule 15.12.2012
comment
Не удалось найти ничего, связанного с жестами в этой библиотеке. - person Sentry.co; 23.04.2016
comment
Я до сих пор не использовал его и из README даже не могу вспомнить, что он должен делать, но я предполагаю, что имел в виду класс CZActionRecognizer в этом каталоге: github.com/CarterA/CZKit/tree/master/Libraries/CZUI/Classes Похоже, это должно быть базовый класс для общих жестов/действий. Похоже, вам нужно будет написать какие-либо настоящие распознаватели самостоятельно, если только вы не хотите просто распознавать клики. Удачи! - person livingtech; 25.04.2016
comment
Это общий обработчик событий для потенциального события Gesture? Это лучшая интерпретация, которую я могу сделать. Думаю, для кого-то может быть контекстуально важным. Большой палец вверх за попытку объяснить. :) В качестве примечания для других, которые ищут информацию, связанную с событиями жестов: я обнаружил, что есть два подхода. Один из них — переопределить методы жестов в NSView. Другой и более современный подход — добавить селекторы к распознавателям жестов. Последнее обеспечивает лучший контроль над тем, когда жест начинается и заканчивается и т. д. Хотя того же можно добиться путем переопределения. Просто не так легко. - person Sentry.co; 25.04.2016