在 SwiftUI 中使用热键库
Use HotKey Library in SwiftUI
我正在尝试在 MacOS 的 SwiftUI 应用程序中使用这个库:soffes/HotKey。
作者描述用法如下:
- 设置热键:
let hotKey = HotKey(key: .r, modifiers: [.command, .option])
- 设置 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
}
}
我正在尝试在 MacOS 的 SwiftUI 应用程序中使用这个库:soffes/HotKey。 作者描述用法如下:
- 设置热键:
let hotKey = HotKey(key: .r, modifiers: [.command, .option])
- 设置 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
}
}