Запретить «недопустимый» сигнал после нажатия клавиш в NSView - PullRequest
7 голосов
/ 15 января 2012

В моем приложении Mac я переопределяю и принимаю определенные нажатия клавиш с помощью функции keyUp в NSView, которая не предназначена для принятия нажатий клавиш.

При нажатии клавиши функция keyUp вызывается , и я обрабатываю нажатие клавиши, даже не вызывая super keyUp:, и все работает, за исключением того, что он также издает звук "doonk" по умолчанию, который происходит, когда вы нажимаете клавишу где-то, что вы не должны.

Есть ли способ указать, что нажатие клавиши было обработано и принято, и что мне не нужен звуковой сигнал, чтобы сообщить пользователю, что это не так?

Ответы [ 2 ]

11 голосов
/ 15 января 2012

Я думаю (но я не уверен на 100%, прошло немного времени с тех пор, как я это сделал), вам также нужно переопределить метод NSView и / или NSResponder performKeyEquivalent:.Там вы вернете YES, чтобы указать вызывающему абоненту, что вы действительно обработали событие.

И это предотвратит появление звука "dooonk".

0 голосов
/ 15 января 2012

Вместо использования keyUp: вы можете захотеть использовать действие moveUp:, так как оно берет на себя все хлопоты по определению, какой ключ обрабатывать из микса. Существуют также подпрограммы с одинаковыми именами для перехода вниз и различные варианты для перемещения с выборами и т. Д.

Дополнительную документацию по этому вопросу см. В Руководстве по обработке событий Cocoa и, в частности, «Обработка действий клавиатуры и вставка текста», где обсуждается использование этих команд в «Приложениях, отличных от что дело с текстом ".

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...