【问题标题】:Why am I not getting the keyboard SwiftUI TextField为什么我没有得到键盘 SwiftUI TextField
【发布时间】:2019-08-03 00:11:00
【问题描述】:

我在 SwiftUI 中有 3 个文本字段。一个在上面,两个并排在下面。

VStack{
    //TF1
    TextField("Duty", text: $dutyNumber)
                            .textFieldStyle(RoundedBorderTextFieldStyle())
                            .padding([.leading], 50)
                            .multilineTextAlignment(.center)
                            .keyboardType(.numberPad)
    HStack{
        //TF2
        TextField("Start time", text: $dutyStartTime)
                            .textFieldStyle(RoundedBorderTextFieldStyle())
                            .padding([.leading], 50)
                            .multilineTextAlignment(.center)
                            .keyboardType(.numberPad)
        //TF3 
        TextField("Finish time", text: $dutyFinishTime)
                            .textFieldStyle(RoundedBorderTextFieldStyle())
                            .padding([.leading], 50)
                            .multilineTextAlignment(.center)
                            .keyboardType(.numberPad)
    }
}.cornerRadius(4)

但是,只有最后一个文本字段 TF3 是交互式的。无法选择前两个 TF1 和 TF2。可以用键盘进入它们,但不能用手指点击选择它们。例如,如果我将顺序从 TF1、TF2、TF3 更改为 TF1、TF3、TF2。然后 TF2 现在是交互式的,但 TF1 和 TF3 不是。这是在 SwiftUI 中添加多个 TextField 的错误还是我遗漏了一些明显的东西?

【问题讨论】:

  • 查看this link。它似乎已经为我解决了模拟器上的问题,但我无法在物理设备上对其进行测试,因为我的设备都没有在 iOS 13 上。
  • 我在真机上测试过,效果很好。在模拟器上,键盘最初不会显示,因为它似乎默认为软件键盘。使用 CMD+K 会显示键盘。
  • 当将 VStack 更改为表单时,文本字段可以与之交互,但这不是我所追求的设计。

标签: swiftui


【解决方案1】:

添加答案以造福他人。

解决方案是删除 .cornerRadius 和所有 TextFields 工作。

 VStack{
//TF1
    TextField("Duty", text: $dutyNumber)
                            .textFieldStyle(RoundedBorderTextFieldStyle())
                            .padding([.leading], 50)
                            .multilineTextAlignment(.center)
                            .keyboardType(.numberPad)

      HStack{
//TF2
    TextField("Start time", text: $dutyStartTime)
                            .textFieldStyle(RoundedBorderTextFieldStyle())
                            .padding([.leading], 50)
                            .multilineTextAlignment(.center)
                            .keyboardType(.numberPad)
//TF3 
    TextField("Finish time", text: $dutyFinishTime)
                            .textFieldStyle(RoundedBorderTextFieldStyle())
                            .padding([.leading], 50)
                            .multilineTextAlignment(.center)
                            .keyboardType(.numberPad)

        }
    }//.cornerRadius(4)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2021-05-22
    • 2021-09-30
    • 2020-11-19
    相关资源
    最近更新 更多