【问题标题】:is iOS 14.2 datePicker broken?iOS 14.2 datePicker 坏了吗?
【发布时间】:2020-11-20 21:21:52
【问题描述】:

我在 iOS 14.2 中的 DatePickers() 视图中遇到问题,当键盘打开时它们在 Forms 中。 有人可以确认这是一个 swiftUI 错误吗?我是 iOS 开发新手。

这是我的看法:

struct TestView: View {
    @State private var test = Date()
    var body: some View {
        return
            NavigationView {
                VStack {
                    HStack {
                        Spacer()
                        Capsule()
                            .fill(Color.secondary)
                            .frame(width: 80, height: 5, alignment: .center)
                        Spacer()
                    }.padding()
                    Form {
                        Section(header: Text("sectionTitle")) {
                            Group {
                                Text("something")
                                Text("To")
                                Text("Fill")
                                Text("The")
                                Text("View")
                                Text("Vertically")
                                Text("Bla")
                                Text("Bla")
                                Text("Bla")
                                Text("Bla")

                            }
                            Group {
                                Text("something")
                                Text("To")
                                Text("Fill")
                                Text("The")
                                Text("View")
                                Text("Vertically")
                                Text("Bla")
                                Text("Bla")
                                Text("Bla")
                                Text("Bla")

                            }
                            DatePicker("a label",
                                       selection: $test,
                                       displayedComponents: .hourAndMinute)
                        }
                    }
                    .padding()
                }
        
            }
    }
}

正在发生的事情是: 当我单击 datePicker -> 选择器以模式显示时(iOS 14 中的正常行为),但在编辑它时,键盘会立即显示并消失,关闭模式。使 Picker 无法使用。

如果我删除表单视图或删除某些文本字段,则不会发生这种情况。

我在 iOS 14.2 iPhone SE 2020 模拟器和真实设备上的 sheet() 中使用此视图。 在ios13上正常工作(带轮子)。

谢谢

【问题讨论】:

    标签: ios swiftui


    【解决方案1】:

    这看起来像一个错误。根据打印输出“检测到约束模棱两可地建议表格视图单元格的内容视图高度为零的情况”,似乎当您单击 DatePicker 时,它无法确定表单的完整大小(可能是因为离屏幕底部这么近?)

    就我个人而言,我会从表单中删除 DatePicker 以确保用户遇到这种情况。但是如果你需要使用表单,我发现的变通方法:

    1. 在 DatePicker 之后添加一个组或其他内容
    2. 在 DatePicker 之后添加 Spacer(minLength: 200)
    3. 设置窗体的框架高度

    【讨论】:

    • 我将不使用表单。它只是在这里,因为它可以更轻松地显示按部分分组的所有字段。如果它不起作用,这没什么大不了的。我会向 Apple 提交反馈
    • 听起来不错。您可能可以使用 VStacks 而不是 Groups 并将它们的背景设置为仍然看起来像分组的部分..
    【解决方案2】:

    考虑使用GraphicalDatePickerStyle 代替默认样式。

    HStack {
        Text("a Label")
        Spacer()
        DatePicker("", selection: $test, displayedComponents: .hourAndMinute)
            .datePickerStyle(GraphicalDatePickerStyle())
    }
    

    【讨论】:

    • 这引入了更多与文件选择器字段重叠的键盘问题。让 swiftUI 决定如何在模式中显示选择器(或设法在 iOS 13 上显示滚轮)更容易。
    【解决方案3】:

    我认为这是 Apple 的错误,我是这样使用选择器的

    Form {
         Section {
            DatePicker(self.label, selection: self.value)
         }
    }
    

    我仍然有这个错误

    2020-11-29 21:11:08.171127+0100 Budgetify[85909:3309604] [警告] 仅警告一次:检测到约束模糊地建议表格视图单元格的内容视图高度为零的情况。我们正在考虑意外折叠并使用标准高度。单元格:>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      • 2021-12-31
      • 2015-03-04
      • 2016-09-08
      • 2011-07-14
      • 2020-09-01
      相关资源
      最近更新 更多