【发布时间】: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)上都会崩溃。您找到解决方案了吗?