2016-11-18 8 views
0

У меня есть NSTextField, используемый в NSViewController. Я хотел бы захватить специальные сочетания клавиш, такие как ⌥ + 0, чтобы сделать что-то особенное. Однако эти ключевые события не доставляются в:Опция захвата/клавиша команды внутри NSTextField

- (BOOL) control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector

Я знаю, что мы не можем переопределить keyDown события для настраиваемого NSTextField поскольку специальный редактор поля используются вместо нашей области так или иначе. Как обращаться с этими специальными ярлыками, не прибегая к добавлению скрытых NSMenuItem s в главном меню?

ответ

0

Как выглядит простая вещь, по-видимому, не на Mac. Использование пользовательского NSFormatter не будет работать, так как я хотел бы захватить каждое нажатие клавиши (включая клавиши-модификаторы). Эти два варианта заключались в том, чтобы либо перехватить sendEvent на уровне NSWindow, и перевести его в контроллер вида, на котором размещен сфокусированный элемент управления, или с помощью специального редактора полей. Я закончил тем, что возвращал специальный редактор полей для NSTextField (путем подкласса NSTextField/NSTextFieldCell и возврата объекта подкласса NSTextView для редактора полей). Таким образом, я смог чисто, используя делегатов, перехватить нажатия клавиш и передать их контроллеру вида для обработки. Нажатие клавиш, которые не будут потребляться, в противном случае обрабатывалось редактором полей.

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

  • Нет связанных вопросов^_^