Macos NSTextField内的捕获选项/命令键
我在NSViewController中使用了一个Macos NSTextField内的捕获选项/命令键,macos,cocoa,keydown,nstextfield,Macos,Cocoa,Keydown,Nstextfield,我在NSViewController中使用了一个NSTextField。我想捕捉特殊的键盘快捷键像⌥+0来做一些特别的事情。但是,这些关键事件不会传递给: -(BOOL)控件:(NSControl*)控件文本视图:(NSTextView*)文本视图doCommandBySelector:(SEL)命令选择器 我知道我们无法覆盖自定义NSTextField的键下事件,因为使用了一个特殊的字段编辑器来代替我们的字段。我如何处理这些特殊的快捷方式,而不必在主菜单中添加隐藏的NSMenuItems?看起
NSTextField
。我想捕捉特殊的键盘快捷键像⌥+0来做一些特别的事情。但是,这些关键事件不会传递给:
-(BOOL)控件:(NSControl*)控件文本视图:(NSTextView*)文本视图doCommandBySelector:(SEL)命令选择器
我知道我们无法覆盖自定义NSTextField的
键下事件,因为使用了一个特殊的字段编辑器来代替我们的字段。我如何处理这些特殊的快捷方式,而不必在主菜单中添加隐藏的NSMenuItem
s?看起来简单的操作显然不在Mac上。使用自定义的NSFormatter
是行不通的,因为我想捕获每个击键(包括修改键)。手头的两个选项是在NSWindow
级别截取sendEvent
,并将其冒泡到承载聚焦控件的视图控制器,或者使用自定义字段编辑器。最后,我返回了NSTextField
的自定义字段编辑器(通过子类化NSTextField
/NSTextFieldCell
并返回了字段编辑器的子类化NSTextView
对象)。通过这种方式,我可以使用委托干净地截获击键并将其传递给视图控制器进行处理。不会被使用的击键将由字段编辑器正常处理。看起来简单的操作显然不在Mac上。使用自定义的NSFormatter
是行不通的,因为我想捕获每个击键(包括修改键)。手头的两个选项是在NSWindow
级别截取sendEvent
,并将其冒泡到承载聚焦控件的视图控制器,或者使用自定义字段编辑器。最后,我返回了NSTextField
的自定义字段编辑器(通过子类化NSTextField
/NSTextFieldCell
并返回了字段编辑器的子类化NSTextView
对象)。通过这种方式,我可以使用委托干净地截获击键并将其传递给视图控制器进行处理。否则,不会被使用的击键将由字段编辑器正常处理