Как сделать собственное управление трекболом / глазным яблоком с помощью Какао?

Я пишу свое первое приложение Cocoa и хочу сделать кнопку "трекбол / глазное яблоко / арбал / как бы она ни называлась", чтобы вращать 3D OpenGL сцену.

Существует прекрасный пример этого пользовательского элемента управления Какао в Pages (комплект Apple iWork) при выборе 3D-диаграммы. После некоторого взлома этот элемент управления выглядит как SFC3DRotateWidget, Вот скриншот элемента управления в Pages.

Может быть, этот виджет можно использовать повторно, но я не нашел, как и где. Поэтому я пытаюсь воссоздать его.

Я неопытный с Какао, поэтому я не уверен, как это сделать, ни где именно (то есть, что делать с Интерфейсным Разработчиком, что делать с кодом...).

Я не уверен, нужно ли мне переопределить функцию рисования. Я думал использовать текстурированную кнопку (Interface Builder) с NSTrackingArea (код) для обработки событий мыши (перемещение, перетаскивание,...), но область обязательно прямоугольная. Кажется, что интерактивные зоны пользовательского элемента управления, используемые Apple, имеют форму стрелок. Я читал на SO, я могу использовать NSBezierPath создать более конкретную область (только через код?).

Это звучит хорошо для вас? Я что-то пропустил?

Дайте знать, если у вас есть какие-либо советы, хитрости или ресурсы, которыми вы можете поделиться!

Спасибо!

1 ответ

Решение

Похоже, вы хотите создать пользовательский элемент управления. Вы делаете это путем создания подкласса NSControl, в котором есть руководство о том, как это сделать. Вы можете управлять круглой активируемой областью и реакциями на события мыши, реализуя различные методы. Например, вы можете отслеживать события мыши с помощью mouseDown: и связанные методы.

Вам, вероятно, не нужно использовать какой-либо пользовательский код для рисования, NSImageView подпредставления с различными стрелками, вероятно, подойдут для ваших целей, если вы не хотите рисовать их в коде.

Другие вопросы по тегам