Я разрабатываю приложение на Mac, используя какао . Мне нужно обработать cmd + period (.) событие клавиатуры как команду, которую я разработал. Но теперь событие клавиатуры cmd + period (.) Обрабатывается не так хорошо, как я ожидал.
В дескрипторе keyEvent какао, если объект приложения обрабатывает событие ключа и оказывается, что он не является эквивалентом ключа или событием управления интерфейсом ключа, он затем отправляет его в окно ключа в сообщении sendEvent :. Объект окна вызывает метод keyDown: в первом респонденте. Мой дескриптор для cmd + period (.) Находится в keyDown: метод .
Но проблема в том, что Mac обрабатывает клавишу cmd + period (.) Так же, как клавиша Escape. Ключевое окно сначала ищет иерархию представлений для вида, ключевым эквивалентом которого является Escape или Command-., В зависимости от того, что было введено. Но ни одно из этих представлений не обрабатывает эквивалент ключа, тогда сообщение cancel: action отправляется первому респонденту в цепочке респондентов.
Таким образом, cmd + period (.) Обрабатывается как операция отмены, прежде чем он достигнет keyDown: method.
Может у кого-нибудь есть идея решить эту проблему. И сделайте cmd + period (.) Обработанным, как я ожидал, но в качестве команды отмены. Спасибо.
Более того, лучше не обрабатывать период cmd + (.), Когда выполняется проверка эквивалентности ключа ( executekeyEquivalent ).