gpt4 book ai didi

swift - 让 keydown NSEvent 在 Swift 中运行一次

转载 作者:行者123 更新时间:2023-12-04 08:04:53 25 4
gpt4 key购买 nike

NSEvent keydown 代码在按下键时重复运行。我如何确保事件只运行一次然后停止监听直到发生按键事件?

    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
}

关于swift - 让 keydown NSEvent 在 Swift 中运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66265730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com