我让应用切换到全屏模式。我想使用ESC键来转义全屏模式,但是在运行时删除IB中的绑定菜单项到ESC键。如何将ESC键绑定到菜单项?
答案 0 :(得分:43)
在Cocoa中处理转义键的首选方法是@Josh Caswell said。
#pragma mark - NSResponder
- (void)cancelOperation:(id)sender
{
[self exitFullScreen];
}
答案 1 :(得分:10)
捕获键盘事件的一种方法涉及子类化:
- (void) keyDown:(NSEvent *)theEvent
添加到子类实现中。子类类似于:
MySubclass.h
@interface MySubclass : NSView {
}
@end
MySubclass.m
#import <Carbon/Carbon.h>
@implementation MySubclass
- (void)keyDown:(NSEvent *)theEvent
{
switch([theEvent keyCode]) {
case kVK_Escape:
NSLog(@"ESC");
// Call the full-screen mode method
break;
default:
[super keyDown:theEvent];
}
}
@end
这不会将ESC
键绑定到菜单项,但它确实为您提供了相同的功能(并且因为您可以截取所有键盘事件,所以更具灵活性。)
答案 2 :(得分:1)
许多人尝试实现esc密钥功能。响应程序链中有cancelOperation来处理转义事件。
.svg
答案 3 :(得分:0)
当按下ESC时我需要躲避WKWebView崩溃(?)所以我对它进行了分类,并添加了:
import Carbon.HIToolbox
override func keyDown(with event: NSEvent) {
if event.keyCode == UInt16(kVK_Escape) {
// We crash otherwise, so just close window
self.window?.performClose(event)
}
else
{
// still here?
super.keyDown(with: event)
}
}