可可收听键盘命令+向上事件



我正在开发一个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 时,控制台不显示任何内容。但是当我按命令+B时,"命令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;
});

关键点是中断键关闭事件并通过返回 nil 来阻止它被调度

相关内容

  • 没有找到相关文章

最新更新