有人发现在iOS 14下UIDatePicker有问题吗?

49

iOS14下,我应用中的日期/时间选择器出现问题。 项目中没有做任何更改。 它们在storyboard中定义,直到我几天前更新为止都工作正常。

现在它们不再是旋转选择器了; 它们变成了带有静态文本的大灰色框。

在此输入图片描述

更新:Apple将日期/时间选择器的样式默认设置为“自动”,而不是“轮子”(以前唯一存在的样式,每个人的现有屏幕布局都是为其设计的)。请参见下面Sanzio的答案。

5个回答

67

为了补充一下Oscar的回答...

UIDatePicker现在有三种不同的样式,根据文档herehere。日期选择器的样式可以通过.preferredDatePickerStyle属性进行访问,该属性可设置四个不同的案例:

  1. .automatic - 一种样式,表示系统基于当前平台和日期选择器模式选择具体样式。
  2. .compact - 一种样式,表示日期选择器显示为一个标签,当点击时显示一个日历样式的编辑器。
  3. .inline - 一种样式,表示日期选择器显示为内联可编辑字段。
  4. .wheels - 一种样式,表示日期选择器显示为轮选择器。

如果你希望界面看起来与iOS 14之前版本相同,请使用.wheels样式。值得注意的是,并非所有样式都能适应所有日期和时间设置,因此只能设置首选样式。

最后,这个属性仅在iOS 13.4或更新版本中提供,所以你必须使用类似以下代码进行版本控制:

if #available(iOS 13.4, *) {
    yourDatePicker.preferredDatePickerStyle = UIDatePickerStyle.automatic
} else {
    // Fallback on earlier versions
}

1
很遗憾,“inline”和“compact”模式在接口构建器(Xcode 12.0.1)中不可用。谢谢。 - Oscar
1
如果我们想使用紧凑风格,该如何解决问题。我正在UITabBar上显示它,但效果非常糟糕。 - Rajender Kumar
1
我们能否在一个地方进行更改,这样我们就不必明确地转到每个使用日期选择器的视图并将其首选样式设置为轮子? - Anuranjan Bose

20
if #available(iOS 13.4, *) {
    datePicker.preferredDatePickerStyle = .wheels
}

19

如果有人在寻找Objective-C:

if (@available(iOS 13.4, *)) {
    datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels;
} 

8

事实证明,苹果公司新增了一种非常不同的UIDatePicker样式,并莫名其妙地将其设置为旧项目的默认值。

现在,您必须进入所有日期/时间选择器的设置中并将样式从“Automatic”更改为“Wheels”。未知“Automatic”基于什么以及为什么它不能默认为唯一先前存在的样式。


3
in iOS appDelegate.m 

didFinishLaunchingWithOptions . () inside 

if (@available(iOS 14, *)) {
      UIDatePicker *picker = [UIDatePicker appearance];
    picker.preferredDatePickerStyle = UIDatePickerStyleWheels;
}

enter image description here

<DateTimePickerModal
    datePickerContainerStyleIOS={{paddingHorizontal: 40}}
    // display={Platform.OS === "ios" ? "spinner" : "default"}                              
    isVisible={isDatePickerVisible}
    mode={mode}
    maximumDate={new Date()}
    onConfirm={handleConfirm}
    onCancel={hideDatePicker}
    />

详细描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接