在 macOS 上放置在 List 中时,TextField 被禁用(不可编辑)。当为 iOS 构建相同的代码并在模拟器中运行时,它会按预期工作。
这是一个错误,还是我错过了什么?
编码:
struct ContentView : View {
    @State private var text: String = ""
    var body: some View {
        VStack {
            List {
                // TextField is not editable when this code is ran on macOS
                TextField($text, placeholder: Text("Entry text"))
                Text("Entered text: \(text)")
            }
            // TextField is editable on both macOS as well as iOS
            TextField($text, placeholder: Text("Entry text"))
        }
    }
}
小智 1
这是因为列表需要点击来驱动选择,而您在这里没有使用它。仅当 TextField 所在的行有选择时,它才可以在 macOS 上的列表中编辑。
如果您将代码更改为类似这样的内容
struct ContentView : View {
    @State private var text: String = "Hello"
    @State private var selection: Int? = nil
    var body: some View {
        VStack {
            List(selection: $selection) {
                ForEach(0..<5) { _ in
                    TextField(self.$text)
                }
            }
            TextField($text)
        }
    }
}
然后运行代码,第一次单击单元格将导致其被选中,第二次单击将导致文本字段接收焦点。
| 归档时间: | 
 | 
| 查看次数: | 4623 次 | 
| 最近记录: |