Как сделать собственное управление трекболом / глазным яблоком с помощью Какао?
Я пишу свое первое приложение Cocoa и хочу сделать кнопку "трекбол / глазное яблоко / арбал / как бы она ни называлась", чтобы вращать 3D OpenGL сцену.
Существует прекрасный пример этого пользовательского элемента управления Какао в Pages (комплект Apple iWork) при выборе 3D-диаграммы. После некоторого взлома этот элемент управления выглядит как SFC3DRotateWidget
, Вот скриншот элемента управления в Pages.
Может быть, этот виджет можно использовать повторно, но я не нашел, как и где. Поэтому я пытаюсь воссоздать его.
Я неопытный с Какао, поэтому я не уверен, как это сделать, ни где именно (то есть, что делать с Интерфейсным Разработчиком, что делать с кодом...).
Я не уверен, нужно ли мне переопределить функцию рисования. Я думал использовать текстурированную кнопку (Interface Builder) с NSTrackingArea
(код) для обработки событий мыши (перемещение, перетаскивание,...), но область обязательно прямоугольная. Кажется, что интерактивные зоны пользовательского элемента управления, используемые Apple, имеют форму стрелок. Я читал на SO, я могу использовать NSBezierPath
создать более конкретную область (только через код?).
Это звучит хорошо для вас? Я что-то пропустил?
Дайте знать, если у вас есть какие-либо советы, хитрости или ресурсы, которыми вы можете поделиться!
Спасибо!
1 ответ
Похоже, вы хотите создать пользовательский элемент управления. Вы делаете это путем создания подкласса NSControl, в котором есть руководство о том, как это сделать. Вы можете управлять круглой активируемой областью и реакциями на события мыши, реализуя различные методы. Например, вы можете отслеживать события мыши с помощью mouseDown:
и связанные методы.
Вам, вероятно, не нужно использовать какой-либо пользовательский код для рисования, NSImageView
подпредставления с различными стрелками, вероятно, подойдут для ваших целей, если вы не хотите рисовать их в коде.