问题描述
此问题与使用 Xcode 12.4 (SwiftUI 2) 的 macOS 应用程序(不是 iOS 或催化剂)的 SwiftUI 有关。 问题是编辑 List 中的 TextField 效果不佳,事实上,它的效果非常差,以至于起初我以为我根本无法编辑它。
import SwiftUI
struct ContentView: View {
@State var name1 = "Hans"
@State var name2 = "E"
@State var name3 = ""
var body: some View {
List {
TextField("Name 1",text: $name1)
TextField("Name 2",text: $name2)
TextField("Name 3",text: $name3)
}
.textFieldStyle(RoundedBorderTextFieldStyle())
}
}
这就是我在尝试编辑字段时所经历的:
- 对于非空字段,单击现有文本:它起作用了(经过一个很小但很烦人的 0.5 秒延迟)。
- 对于非空字段,单击外部现有文本:没有任何反应。
- 对于空白字段(“姓名 3”),单击字段中的任意位置:它有效(经过一小段延迟后)。
- 在任何字段内的任何位置双击:没有任何反应。
我希望这不是预期的行为。对于仅包含单个字符的字段来说,这尤其成问题,这给用户带来了困难(必须准确点击“E”)。我在这里做错了吗?
我注意到问题 Editable TextField in SwiftUI List,它有点相似,但该问题报告 TextField 根本不起作用。
解决方法
找到了解决方案。
import SwiftUI
struct ContentView: View {
@State var name1 = "Hans"
@State var name2 = "E"
@State var name3 = ""
var body: some View {
List {}
.overlay(VStack(spacing: 20){
TextField("Name 1",text: $name1)
TextField("Name 2",text: $name2)
TextField("Name 3",text: $name3)
})
.textFieldStyle(RoundedBorderTextFieldStyle())
}
}