捕获NSTextField中的选项/命令键

时间:2016-11-18 12:44:32

标签: macos cocoa keydown nstextfield

我在NSTextField中使用NSViewController。我想捕捉像⌥+ 0这样的特殊键盘快捷键来做一些特别的事情。但是,这些关键事件无法送达:

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

我知道我们无法覆盖自定义NSTextField的keyDown事件,因为无论如何都会使用特殊字段编辑器代替我们的字段。如何处理这些特殊快捷方式而无需在主菜单中添加隐藏的NSMenuItem

1 个答案:

答案 0 :(得分:0)

看起来很简单的事情,显然不在Mac上。使用自定义NSFormatter不会起作用,因为我想捕获每个击键(包括修改键)。手头的两个选项是截取sendEventNSWindow并将其冒泡到托管焦点控件的视图控制器,或者使用自定义字段编辑器。我最终返回NSTextField的自定义字段编辑器(通过子类化NSTextField / NSTextFieldCell并返回字段编辑器的子类NSTextView对象。通过这种方式,我能够干净利落地使用代理拦截击键并将它们传递给要处理的视图控制器。否则将被消耗的击键将由场编辑器正常处理。