如何解决使 keydown NSEvent 在 Swift 中运行一次
NSEvent keydown 代码在按下键时重复运行。如何确保事件只运行一次然后停止侦听直到发生 key up 事件?
override func viewDidLoad() {
super.viewDidLoad()
NSEvent.addLocalMonitorForEvents(matching: .keyDown,handler: doSomething(event:))
}
func doSomething(event: NSEvent) -> NSEvent{
// 36 is key code for ENTER key
if event.keyCode == 36{
print("Hello World!")
}
return event
}
解决方法
您可以使用 isARepeat
属性简单地检查 NSEvent
是否重复:
func doSomething(event: NSEvent) -> NSEvent {
if event.keyCode == 36,!event.isARepeat {
print("Hello World!")
}
return event
}
如果您只是想摆脱按键声音,您需要将返回类型更改为可选并返回 nil:
func doSomething(event: NSEvent) -> NSEvent? {
guard !event.isARepeat else {
// this will suppress the key sound if you return nil and not propagate the key down event
return nil
}
if event.keyCode == 36 {
print("Hello World!")
// if you want to suppress the key sound when is not a repeat just return nil here as well
return nil
}
return event
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。