【发布时间】:2020-01-16 06:49:34
【问题描述】:
我想使用 SwiftUI TextField 和 SwiftUI List 在项目列表上方呈现“搜索框”。类似于 Safari 帮助菜单项中的搜索框...它提供了一个搜索框,您可以在其中输入文本,同时使用向上和向下箭头键浏览结果列表。
我玩过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)")
}
}
}
}
}
【问题讨论】:
-
你好,我遇到了和你一样的问题。想知道您是否有任何解决方案?我认为问题在于 TextField 接管了所有 onMoveCommand,并使 List 无法对事件做出反应。不确定您是否取得了任何进展,如果您有解决方案,请告诉我。谢谢
-
我遇到了同样的问题,最终使用 AppKit 而不是 SwiftUI 重写了整个视图,以便能够拦截关键事件并控制 tableview 的选择。
标签: swift macos swiftui swiftui-list