如何在macOS的SwiftUI视图中检测键盘事件?
我希望能够使用击键来控制特定屏幕上的项目,但不清楚如何检测键盘事件,这通常是通过覆盖NSView中的keyDown(_ event: NSEvent)来完成的。
发布于 2020-04-11 18:25:10
到目前为止,还没有内置的原生SwiftUI应用程序接口。
这里只是一个可能的方法的演示。使用Xcode11.4/ macOS 10.15.4测试
struct KeyEventHandling: NSViewRepresentable {
class KeyView: NSView {
override var acceptsFirstResponder: Bool { true }
override func keyDown(with event: NSEvent) {
print(">> key \(event.charactersIgnoringModifiers ?? "")")
}
}
func makeNSView(context: Context) -> NSView {
let view = KeyView()
DispatchQueue.main.async { // wait till next event cycle
view.window?.makeFirstResponder(view)
}
return view
}
func updateNSView(_ nsView: NSView, context: Context) {
}
}
struct TestKeyboardEventHandling: View {
var body: some View {
Text("Hello, World!")
.background(KeyEventHandling())
}
}输出:

https://stackoverflow.com/questions/61153562
复制相似问题