macOS 上 SwiftUI 中列表内的 TextField:编辑效果不佳

ren*_*ene 7 macos textfield swiftui

此问题与使用 Xcode 12.4 (SwiftUI 2) 的macOS应用程序(不是 iOS 或 Catalyst)的 SwiftUI 有关。问题在于,编辑列表内的文本字段效果不佳,事实上,它的效果非常差,以至于一开始我以为我根本无法编辑它。

这是代码,只是一个简单的例子:

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())
    }
}
Run Code Online (Sandbox Code Playgroud)

具有焦点的文本字段

这就是我尝试编辑字段时的经历:

  • 对于非空字段,单击现有文本:它可以工作(在短暂但烦人的 0.5 秒延迟之后)。
  • 对于非空字段,在现有文本外部单击:不会发生任何情况。
  • 对于空字段(“名称 3”),单击字段中的任意位置:它可以工作(稍有延迟后)。
  • 双击任意字段内的任意位置:什么也不会发生。

我希望这不是预期的行为。对于仅包含单个字符的字段来说,这尤其成问题,使用户感到困难(必须准确地点击“E”)。我在这里做错了什么吗?

我注意到问题Editable TextField in SwiftUI List,它有点相似,但该问题报告 TextField 根本不起作用。

小弟调*_*弟调调 -1

找到了解决方案。

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())
    }
}
Run Code Online (Sandbox Code Playgroud)