Cocoa NSWindowController可以';将不带WebView的捕获ESC添加到窗口中
我从File->New创建了NSWindowController的子类,并选中了“with XIB for user interface”选项。所以我创建了3个新文件。然后我使用Interface Builder将一个视图添加到窗口中 并在MyWindowController.m中包含以下代码:Cocoa NSWindowController可以';将不带WebView的捕获ESC添加到窗口中,cocoa,nswindowcontroller,Cocoa,Nswindowcontroller,我从File->New创建了NSWindowController的子类,并选中了“with XIB for user interface”选项。所以我创建了3个新文件。然后我使用Interface Builder将一个视图添加到窗口中 并在MyWindowController.m中包含以下代码: - (void)keyDown:(NSEvent *)theEvent{ NSLog(@"%@", theEvent); } 首先测试,添加一个NSButton,然后运行项目 第二个测试,添加
- (void)keyDown:(NSEvent *)theEvent{
NSLog(@"%@", theEvent);
}
嗯,我使用事件监视器来捕获ESC按键,请参见此处的详细信息:
但是仍然没有得到WevView测试。请参见
NSResponder
取消操作:
文档:
此方法绑定到转义和命令-。(句号)钥匙。这个
“关键点”窗口首先在视图层次结构中搜索其关键点
等效项为Escape或Command-,以输入者为准。如果没有
这些视图处理等价的键,窗口发送默认值
取消操作的操作消息:发送给第一响应者和来自
在那里,消息沿着响应链向上传播。如果中没有响应者
响应程序链实现取消操作:,键窗口
在视图层次结构中搜索键等效为Escape的视图
(请注意,如果原始密钥等效,则这可能是多余的。)
逃脱)。如果找不到这样的响应程序,则会显示取消:操作消息
发送到实现的响应程序链中的第一个响应程序
它
如果您想在
NSWindowController
子类中处理Esc键,只需在其中定义一个cancel:
方法。我建议告诉窗口将感兴趣的视图作为第一响应者,以便捕获键事件
[[self window]makeFirstResponder:_viewControllerOfInterest];
有两种方法可以检测ESC按键,以下是详细信息:解决方案是事件监视器: