1

我正在尝试使用这个库:soffes/HotKey in an SwiftUI Application for MacOS。作者将用法描述如下:

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

我的问题是我不知道我必须把处理程序放在哪里。有任何想法吗?

4

2 回答 2

2

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

对我来说,解决方法是在我的 appDelegate 上创建一个hotKey属性(尽管我确信如果你不使用 appDelegate,你可以在任何根视图或场景上做同样的事情)并将我的 hotKey 分配给它:

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
    }
}
于 2021-05-01T20:50:51.273 回答
0

好的,所以我想通了。keyDownHandler真正定义了按下热键时应该发生的情况,因此您可以将其放入身体.onAppear {}后视图

于 2019-12-31T00:02:54.273 回答