NSTextField内部的捕获选项/命令键
问题描述:
我在NSViewController
中使用NSTextField
。我想捕获特殊的键盘快捷键,如⌥+ 0来做一些特殊的事情。然而,这些关键事件没有得到传递到:NSTextField内部的捕获选项/命令键
- (BOOL) control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector
我知道我们不能覆盖keyDown
事件自定义的NSTextField,因为一个特殊的字段编辑器来代替我们的领域中使用的反正。如何处理这些特殊的快捷方式,而不诉诸在主菜单中添加隐藏的NSMenuItem
?
答
看起来像一件简单的事情,显然不是在Mac上。使用自定义NSFormatter
将不起作用,因为我想捕获每个击键(包括修改键)。手头的两个选项是拦截sendEvent
,NSWindow
级别并将其展开到托管集中控件的视图控制器或使用自定义字段编辑器。我最终返回了NSTextField
的自定义字段编辑器(通过继承NSTextField
/NSTextFieldCell
并返回字段编辑器的子类NSTextView
对象)。通过这种方式,我可以干净地使用委托,拦截击键并将它们传递给视图控制器进行处理。不会被使用的击键将通过场编辑器正常处理。