swift – Cocoa听取键盘命令事件

swift – Cocoa听取键盘命令事件,第1张

概述我正在开发一个macOS应用程序,我想在NSViewController中处理本地热键事件(命令向上箭头键). 以下是我使用Swift的方法: override func keyDown(with event: NSEvent) { let modifierkeys = event.modifierFlags.intersection(.deviceIndependentFlagsMas 我正在开发一个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;    }}

当我在视图中构建并按下命令时,控制台不显示任何内容.但是当我按下命令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;});

关键是要中断keydown事件并阻止通过返回nil来调度它

总结

以上是内存溢出为你收集整理的swift – Cocoa听取键盘命令事件全部内容,希望文章能够帮你解决swift – Cocoa听取键盘命令事件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1016372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存