如何在 macOS 上的 SwiftUI 视图中检测键盘事件?
我希望能够使用击键来控制特定屏幕上的项目,但不清楚如何检测键盘事件,这通常是通过覆盖keyDown(_ event: NSEvent)in来完成的NSView。
我想使用 SwiftUITextField和 SwiftUIList在项目列表上方呈现“搜索框”。大致类似于 Safari 的“帮助”菜单项中的搜索框……它提供了一个搜索框,您可以在其中输入文本,同时使用向上和向下箭头键浏览结果列表。
我已经对 "parent" 进行了onMoveCommand, focusable, 和调整NSWindow,但还没有找到一种清晰而明显的方法TextField来不断接受输入,同时仍然能够List使用向上和向下箭头键导航底层。以下代码允许在 中输入文本TextField,或在列表条目中导航,但不能同时...
struct ContentView: View {
@State var text: String = ""
@State var selection: Int? = 1
var body: some View {
VStack {
TextField("Enter text", text: $text)
List(selection: $selection) {
ForEach((1...100), id: \.self) {
Text("\($0)")
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 创建自定义环境键有效,但如果我希望在视图中设置该值,XCODE 不允许这样做。但是可以设置预定义的环境值。我究竟做错了什么?
struct ResetDefault: EnvironmentKey {
static var defaultValue: Bool = false
}
extension EnvironmentValues {
var resetDefault: Bool {
get { self[ResetDefault.self] }
set { self[ResetDefault.self] = newValue }
}
}
struct ResetView: View {
@Environment(\.resetDefault) var reset
var body: some View {
Text("Reset").onAppear() {
reset = true. // Cannot assign to property: 'reset' is a get-only property
}
}
}
Run Code Online (Sandbox Code Playgroud)