我在NSTextField
中使用NSViewController
。我想捕捉像⌥+ 0这样的特殊键盘快捷键来做一些特别的事情。但是,这些关键事件无法送达:
- (BOOL) control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector
我知道我们无法覆盖自定义NSTextField的keyDown
事件,因为无论如何都会使用特殊字段编辑器代替我们的字段。如何处理这些特殊快捷方式而无需在主菜单中添加隐藏的NSMenuItem
?
答案 0 :(得分:0)
看起来很简单的事情,显然不在Mac上。使用自定义NSFormatter
不会起作用,因为我想捕获每个击键(包括修改键)。手头的两个选项是截取sendEvent
级NSWindow
并将其冒泡到托管焦点控件的视图控制器,或者使用自定义字段编辑器。我最终返回NSTextField
的自定义字段编辑器(通过子类化NSTextField
/ NSTextFieldCell
并返回字段编辑器的子类NSTextView
对象。通过这种方式,我能够干净利落地使用代理拦截击键并将它们传递给要处理的视图控制器。否则将被消耗的击键将由场编辑器正常处理。