【问题标题】:SwiftUI iOS 14 Date Picker Weird BehaviorSwiftUI iOS 14 日期选择器奇怪的行为
【发布时间】:2021-02-28 05:20:37
【问题描述】:

在 iPhone 8 上选择时间时,日期选择器崩溃。 TimeZone 是在选择器中更改的@State 变量。用户能够选择日期。但是当用户选择时间时,日期选择器会崩溃,因此无法设置时间。我已经在 iPhone X 和 iPhone 12 pro Max 上对此进行了测试,效果很好。

但是 Xcode 总是将这些打印出警告:

  • [DatePicker] UIDatePicker 0x10a42b190 正在其下方布局 最小宽度为 280。这可能不像预期的那样,尤其是 字体大于正常大小。
  • 找不到支持键盘类型 4 的键盘 iPhone-PortraitTruffle-NumberPad;使用 25901_PortraitTruffle_iPhone-Simple-Pad_Default

iPhone 8 模拟器也可以。来自 TestFlight 的用户显示反馈和视频无法在 iPhone 8 上被选中。

这些警告是否会导致日期选择器崩溃?如果是这样,如何抑制这些警告?设置时区时我是否正确使用了 .environment 修饰符?

下面是两个日期选择器,它们都有同样的问题。

我尝试过但不起作用的方法:

  • 将视图提取为子视图

  • 移除 .environment 修饰符

  • 移除 .id 修饰符

  • 移除动画修饰符

  • 移除显示组件参数

         Section(footer: Text("Event is being set in \(selectedLocation(locationIndex: site).timeOffSet)")){
    
                 Toggle(isOn: $isAllDay){
                     Text("All-day")
                 }
    
                 VStack{
                     DatePicker(selection: $date, displayedComponents: self.isAllDay ? .date : [.hourAndMinute, .date], label: {
                     Text("Date")
                 }).environment(\.timeZone,  (TimeZone(identifier: timeZone) ?? TimeZone(identifier: "America/New_York")!))
                 }.animation(nil)
                 .id(self.datePickerID)
    
                 VStack{
                     DatePicker(selection: $date, displayedComponents: self.isAllDay ? .date : [.hourAndMinute, .date], label: {
                     Text("Date")
                 })
                     .disableAutocorrection(false)
                     .id(2)
                     .environment(\.timeZone,  (TimeZone(identifier: timeZone) ?? TimeZone(identifier: "America/New_York")!))
                     .animation(nil)
    
                 }
         }
    

【问题讨论】:

  • 我也在观察这样的奇怪行为。我用于 DatePicker 的 .date 组件有效,但是当我尝试单击 .hourAndMinute 的时间时,键盘弹出并立即消失。
  • 我也遇到了同样的问题,请问您最终找到解决方案了吗?
  • 不,我还没有找到解决方案
  • @KyleBeard 当我在设置中使用较大的文本时,我遇到了同样的问题。紧凑视图几乎每次在具有较大文本的小型设备(如 iPhone SE)上都会崩溃。您找到解决方案了吗?

标签: ios swift swiftui


【解决方案1】:

尝试添加.datePickerStyle(CompactDatePickerStyle()) 以压缩它,然后在单击时弹出它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多