Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos NSTextField内的捕获选项/命令键_Macos_Cocoa_Keydown_Nstextfield - Fatal编程技术网

Macos NSTextField内的捕获选项/命令键

Macos NSTextField内的捕获选项/命令键,macos,cocoa,keydown,nstextfield,Macos,Cocoa,Keydown,Nstextfield,我在NSViewController中使用了一个NSTextField。我想捕捉特殊的键盘快捷键像⌥+0来做一些特别的事情。但是,这些关键事件不会传递给: -(BOOL)控件:(NSControl*)控件文本视图:(NSTextView*)文本视图doCommandBySelector:(SEL)命令选择器 我知道我们无法覆盖自定义NSTextField的键下事件,因为使用了一个特殊的字段编辑器来代替我们的字段。我如何处理这些特殊的快捷方式,而不必在主菜单中添加隐藏的NSMenuItems?看起

我在NSViewController中使用了一个
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
对象)。通过这种方式,我可以使用委托干净地截获击键并将其传递给视图控制器进行处理。否则,不会被使用的击键将由字段编辑器正常处理