在SwiftUI中使用热键库

在SwiftUI中使用热键库,swiftui,global-hotkey,Swiftui,Global Hotkey,我试图在MacOS的SwiftUI应用程序中使用这个库。 作者将其用法描述如下: 设置热键: 设置keyDownHandler并在按下热键时获取回调: 我的问题是,我不知道我必须把处理器放在哪里。有什么想法吗?好吧,我想出来了。 keydownhandler实际上只是定义了当按下热键时应该发生什么,这样你就可以在你的身体视图之后把它放到.onAppear{}中,我遇到了同样的问题;我正在初始化appDelegate的ApplicationIDFinishLaunching函数中的热键。我在当地申

我试图在MacOS的SwiftUI应用程序中使用这个库。 作者将其用法描述如下:

设置热键: 设置keyDownHandler并在按下热键时获取回调: 我的问题是,我不知道我必须把处理器放在哪里。有什么想法吗?

好吧,我想出来了。
keydownhandler实际上只是定义了当按下热键时应该发生什么,这样你就可以在你的身体视图之后把它放到.onAppear{}中,我遇到了同样的问题;我正在初始化appDelegate的ApplicationIDFinishLaunching函数中的热键。我在当地申报了它,我想它正在被垃圾收集

我的解决方案是在我的appDelegate上创建热键属性,尽管我确信如果不使用appDelegate并将我的热键指定给它,您可以在任何根视图或场景上执行相同的操作:

类AppDelegate:NSObject,NSApplicationDelegate{ var热键:热键? func applicationdFinishLaunching\uu通知:通知{ 让热键=热键:.6,修饰符:[.command,.option] hotKey.keyDownHandler={ PrintGet热键位于\Date } self.hotKey=热键 } }
let hotKey = HotKey(key: .r, modifiers: [.command, .option])
hotKey.keyDownHandler = {
  print("Pressed at \(Date())")
}