hkl*_*lel 7 cocoa nsevent nsviewcontroller swift
我正在开发一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
当我在视图中构建并按下命令+向上时,控制台不显示任何内容.但是当我按下命令+ B时,"命令B"被注销.
那么为什么这不适用于Command +?我该怎么做到这一点?
我找到了解决方案:
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;
});
Run Code Online (Sandbox Code Playgroud)
关键是要中断keydown事件,通过返回nil来阻止它被调度
| 归档时间: |
|
| 查看次数: |
735 次 |
| 最近记录: |