Cocoa 监听键盘命令+向上事件
Cocoa Listen to Keyboard command+up Event
我正在开发 macOS 应用程序,我想在 NSViewController
.
中处理本地热键事件(命令 + 向上箭头键)
这是我用 Swift 做的:
override func keyDown(with event: NSEvent) {
let modifierkeys = event.modifierFlags.intersection(.deviceIndependentFlagsMask);
let hasCommand = modifierkeys == .command;
switch Int(event.keyCode) {
case kVK_UpArrow where hasCommand:
print("command up");
break;
case kVK_ANSI_B where hasCommand:
print("command B");
break;
default:
break;
}
}
当我构建并在视图中按下 command+up 时,控制台没有任何显示。但是当我按下 command+B 时,"command B" 被注销了。
那么为什么这不适用于 Command+up?我该如何实现?
我找到了解决方案:
self.keyMonitor = NSEvent.addLocalMonitorForEvents(matching: NSEventMask.keyDown, handler: { (event) -> NSEvent? in
if (event.modifierFlags.contains(.command)){
if (Int(event.keyCode) == kVK_UpArrow){
print("command up");
return nil;
}
}
return event;
});
重点是打断keydown事件,通过返回nil防止派发
我正在开发 macOS 应用程序,我想在 NSViewController
.
这是我用 Swift 做的:
override func keyDown(with event: NSEvent) {
let modifierkeys = event.modifierFlags.intersection(.deviceIndependentFlagsMask);
let hasCommand = modifierkeys == .command;
switch Int(event.keyCode) {
case kVK_UpArrow where hasCommand:
print("command up");
break;
case kVK_ANSI_B where hasCommand:
print("command B");
break;
default:
break;
}
}
当我构建并在视图中按下 command+up 时,控制台没有任何显示。但是当我按下 command+B 时,"command B" 被注销了。
那么为什么这不适用于 Command+up?我该如何实现?
我找到了解决方案:
self.keyMonitor = NSEvent.addLocalMonitorForEvents(matching: NSEventMask.keyDown, handler: { (event) -> NSEvent? in
if (event.modifierFlags.contains(.command)){
if (Int(event.keyCode) == kVK_UpArrow){
print("command up");
return nil;
}
}
return event;
});
重点是打断keydown事件,通过返回nil防止派发