KeyDown и образец какао

Я - определенно не эксперт Ruby, но я дам ему выстрел:

$ irb 
system "echo Hi"
Hi
=> true

необходимо также быть в состоянии сделать вещи как:

cmd = 'ls'
system(cmd)
5
задан Blaszard 16 March 2016 в 10:15
поделиться

3 ответа

Я пытался переопределить событие Keydown, но читал, что это невозможно в NSObject.

Верно. Только респондент может реагировать на события.

Как я могу обрабатывать такие события?

Реализовать респондент. Создание подкласса NSWindow или NSWindowController будет работать. Убедитесь, что вы сделали ваше фактическое окно или оконный контроллер экземпляром вашего подкласса.

Документация Какао объясняет дальше.

Класс приложения расширяет класс NSObject.

Почему? Обычно основным классом пакета приложений является NSApplication или его подкласс - и не так много веских причин для создания подкласса NSApplication.

PS: Какая очень хорошая книга для начала изучения программирования MacOS?

Я не знал Я сам не учусь по книге Hillegass (я придерживался документации Apple), но это '

7
ответ дан 18 December 2019 в 12:00
поделиться

Из Руководство по обработке событий Какао - Цепочка респондента :

Цепочка респондента - это связанная серия объектов респондента, к которым применяется сообщение о событии или действии. . Когда данный объект-респондент не обрабатывает конкретное сообщение, объект передает сообщение своему преемнику в цепочке (то есть своему следующему респонденту).

Когда вы нажимаете клавишу, окно получает событие keyDown. Затем он отправляет событие первому респонденту , который обычно представляет собой элемент управления с синей рамкой вокруг его границы (попробуйте щелкнуть поле адреса в Safari или Firefox, если оно обведено синим, тогда оно сначала -статус ответчика).

Если первый респондент не ест нажатие клавиши (адресное поле Safari использует его, когда отображает символ), то он передает его по цепочке респондента на ] следующий респондент в иерархии представлений, затем к окну и к оконному контроллеру, как вы можете видеть в Руководстве . (Позаботьтесь о том, чтобы респондент действия - это отдельная история.)

Итак, вы должны реализовать keyDown: в представлении вашего окна или в самом окне, если в нем нет представлений, которые поглощают события. Самый простой способ проверить - это переопределить метод keyDown: пустого окна

. Чтобы погрузиться во внутреннюю работу, вы можете даже попробовать переопределить метод sendEvent: окна. sendEvent: отправляет события в представления окна,

4
ответ дан 18 December 2019 в 12:00
поделиться

Создание подкласса NSWindow или NSWindowController будет работать.

Точно так же вы можете создать подкласс NSView и переопределить его методы обработки событий.

Какая очень хорошая книга для начала изучения Программирование для MacOS?

Изучить Objective-C на Mac от Dalrymple действительно просто, охватывает достаточно основ и действует достаточно быстро, чтобы быстро начать работу. Он затрагивает все, от Xcode и Interface Builder до практик ООП и Objective-C. Особенно полезны для новичков (IMHO) главы об организации исходного файла и Foundation.

Удачи!

4
ответ дан 18 December 2019 в 12:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: