我正在使用 SwiftUI 制作 macOS 应用程序。我有一个符合 的结构NSViewRepresentable,其目的是检测按下的哪个键的键代码。我想将其传递event.keyCode回 SwiftUI 并将其保存到环境对象中,以便我可以在应用程序的其他位置使用关键代码。
我知道我应该使用 SwiftUI 协调器,但我能找到的所有教程和 Stack Overflow 问题都使用现成的类,例如UIPageControl或UISearchBar具有预配置委托的类。我不确定使用简单的自定义时该怎么做NSView。有人可以解释如何在使用自定义时将数据从NSViewRepresentable结构传递到 my 中吗?@EnvironmentObjectNSView
struct KeyboardEvent: NSViewRepresentable {
class KeyView: NSView {
override var acceptsFirstResponder: Bool { true }
override func keyDown(with event: NSEvent) {
print("\(event.keyCode)")
}
}
func makeNSView(context: Context) -> NSView {
let view = KeyView()
DispatchQueue.main.async {
view.window?.makeFirstResponder(view)
}
return view
}
func updateNSView(_ nsView: NSView, context: Context) {
}
} …Run Code Online (Sandbox Code Playgroud)