以下是我使用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听取键盘命令事件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)