在 SwiftUI 中使用热键库

Use HotKey Library in SwiftUI

我正在尝试在 MacOS 的 SwiftUI 应用程序中使用这个库:soffes/HotKey。 作者描述用法如下:

  1. 设置热键:
let hotKey = HotKey(key: .r, modifiers: [.command, .option])
  1. 设置 keyDownHandler 并在按下热键时获取回调:
hotKey.keyDownHandler = {
  print("Pressed at \(Date())")
}

我的问题是我不知道必须将 Handler 放在哪里。有什么想法吗?

好的,我明白了。 keyDownHandler 实际上只是定义了当按下热键时应该发生什么,所以你可以把它放在 .onAppear {} 之后你的 body View

我运行遇到了同样的问题;我正在我的 appDelegate 的 applicationDidFinishLaunching 函数中初始化一个热键。我在本地声明了它,我认为它正在被垃圾收集。

我的解决方法是在我的 appDelegate 上创建一个 hotKey 属性(尽管我确信如果您不使用appDelegate) 并将我的热键分配给它:

class AppDelegate: NSObject, NSApplicationDelegate {

    var hotKey: HotKey?

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        let hotKey = HotKey(key: .six, modifiers: [.command, .option])
        hotKey.keyDownHandler = {
            print("Got hotkey at \(Date())")
        }
        
        self.hotKey = hotKey
    }
}