Как использовать Mac OS X Cocoa для мультитач-жестов - PullRequest
4 голосов
/ 31 января 2009

Я пишу программу, в которой NSView встроен в NSScrollView, который пользователь может масштабировать. Я бы хотел настроить его так, чтобы пользователь мог масштабировать изображение с помощью жеста мультитач-сжатия, поддерживаемого в MacBook Air и новых цельных MacBook / MacBook Pro и в таких приложениях, как Safari и iPhoto. Я искал документацию Apple и не могу понять, как это сделать.

  1. Поддерживается ли это с помощью общедоступных API в Mac OS X 10.5 Leopard?
  2. Если нет, насколько «плохими» являются частные API (например, это просто необъявленная константа или целый новый набор методов)?

1 Ответ

12 голосов
/ 31 января 2009

Редактировать: В Snow Leopard добавлены поддерживаемые API для жестов и мультитач. См. Примечания к выпуску AppKit для Snow Leopard ; ⌘F для «жест» и «MultiTouch» (sic). Они будут выглядеть довольно знакомо, если вы использовали их ниже, но, вероятно, есть некоторые отличия, так что в любом случае прочитайте новую документацию.


Поддерживается ли это с помощью общедоступных API в Mac OS X 10.5 Leopard?

Нет. 10.5.0 его вообще не поддерживает, а с 10.5.1 по 10.5.6 вы реализуете недокументированные методы.

Если нет, насколько «плохими» являются частные API (например, это просто необъявленная константа или совершенно новый набор методов)?

Совсем неплохо. Вы должны реализовать некоторые недокументированные методы событий в своем представлении. Поскольку вы тот, кто реализует методы, вы не должны падать, если Apple меняет методы; все, что произойдет, - перестанет работать эта функция.

Однако, если вы будете извлекать абсолютное (не дельта) увеличение или поворот из события, то это еще не документированные методы события, поэтому вы должны защищать эти сообщения с помощью сообщений respondsToSelector: и выполнять тщательная проверка диапазона возвращаемых значений методов.

...