You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

有人遇到iOS 14系统下UIDatePicker无法正常显示的问题吗?

问题根因

iOS 14 对 UIDatePicker 的默认展示样式做了破坏性变更:

  • iOS 13 及更早版本的默认 datePickerStyle 为 .wheels 滚轮样式
  • iOS 14 及以上版本的默认 datePickerStyle 为 .automatic,系统会根据使用场景自动选择 .compact/.inline 新样式,这类新样式的尺寸计算、展示逻辑和旧的滚轮样式完全不同,如果直接沿用 iOS 13 的弹窗展示逻辑就会出现不显示的问题。
解决方案

方案1:强制沿用旧版滚轮样式

如果不需要用到 iOS 14 新增的日历样式,直接显式指定样式即可实现全版本兼容,原有其他展示逻辑不需要修改:

let datePicker = UIDatePicker()
// 显式指定滚轮样式,兼容全系统版本
if #available(iOS 13.4, *) {
    datePicker.preferredDatePickerStyle = .wheels
}
// 其余原有 datePicker 配置、弹窗展示逻辑保持不变即可

OC 版本代码如下:

UIDatePicker *datePicker = [[UIDatePicker alloc] init];
if (@available(iOS 13.4, *)) {
    datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels;
}
// 原有后续逻辑保持不变

方案2:适配新版样式

如果要使用 iOS 14 的新日历样式,需要做对应适配:

  • 调整弹窗容器的尺寸约束,适配新样式的自动布局规则
  • 若使用 .compact 样式,不需要自己写弹窗逻辑,系统点击后会自动弹出浮层选择器,移除原有自定义的 present 代码即可
其他排查点
  • 检查弹窗容器的 translatesAutoresizingMaskIntoConstraints 属性是否设置为 false,是否给 date picker 添加了足够的宽高/位置约束
  • 排查是否有仅在 iOS 14 以上生效的 UI 适配代码,遮挡了 date picker 的视图层级
  • 检查 date picker 的 isHidden 属性、alpha 值是否被误修改为不显示状态

内容的提问来源于stack exchange,提问作者Rakesh Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:45:04