2015-03-01 3 views
0

Я пытаюсь использовать стандартные сочетания клавиш mac (найдено в ~\Library\KeyBindings\DefaultKeyBinding.dict), чтобы сопоставить action methods, найденным в NSResponder. Я переопределяю эти action methods в одном из моих пользовательских классов для выполнения пользовательской навигации между моими элементами пользовательского интерфейса.Стандартные привязки ключевых слов, которые ведут себя беспорядочно

В комбинации клавиша файл как ^-p и карту в action method moveUp:

Запутанное то, что, когда я нажимаю в моем приложении, способ пожаров действия, но когда я нажимаю ^-p ничего не происходит (только звуковой сигнал, указывающий, что он не мог найти ничего подходящего в цепочке ответчиков).

ответ

0

Последующие испытания показали следующее (выполняется трассировки стека):

я имел НЕ реализован keyDown метод где-нибудь так мой action methods где не стрельба как обычные методы действия. Случилось так, что событие keyDown перемещалось по цепочке ответчиков в NSWindow, где оно обрабатывалось способом, аналогичным Key Interface Control KIC.

Первой странной вещью является то, что KIC документируется, чтобы произойти до того, как события keyDown будут отправлены, и это будет эффективно в конце цепочки ответчиков событий keyDown. KIC, очевидно, не подбирает свои ключевые привязки из стандартного словаря клавиш, но ищет свои собственные ключи - некоторые из них должны включать в себя клавиши со стрелками для навигации.

Вторая странная вещь - KIC искал реализацию метода действия, чтобы знать, что делать с нажатием клавиши со стрелкой.

Это поведение недокументировано, насколько мне известно, и представляет собой запутанное сочетание KIC и методов действий. Но что есть, то есть.

0

Где вы определяете привязку клавиш? textView:doCommandBySelector: или в файле keyBindings? И ваш ресивер работает в однолинейном режиме?

В моем опыте сигнал часто означает, что определение KeyBinding имеет опечаткой в ​​нем ...

+0

Они являются стандартными KeyBindings из ~ \ Library \ KeyBindings \ DefaultKeyBinding.dict - ничего настраиваемого, поэтому не думайте, что это ошибка. Также трижды проверил это. – Sam

+0

Мой приемник на самом деле является «NSView» (не «NSTextField») – Sam

+0

Я также замечаю, что некоторые комбинации клавиш (в словаре ключевых слов) запускают «методы действий», а другие запускают «keyDown». Я действительно не совсем понимаю порядок вызова, и я глубоко вкопался в Apple Event Docs. – Sam

Смежные вопросы