首页 > 解决方案 > UIDatePicker 在渲染时颠簸日期/时间

问题描述

我正在向我的应用程序添加一个 UIDatePicker,并且我使用 UITextField.inputView 来呈现它,而不是常规键盘(因此我们不会为视图上的选择器占用额外的空间)。

.wheels用作 datePicker 的样式。

class ViewController: UIViewController {
    @IBOutlet weak var field: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        field.delegate = self
    }
}
extension ViewController : UITextFieldDelegate {
    func textFieldDidBeginEditing(_ textField: UITextField) {
        if textField == field {
            let datePicker = UIDatePicker()
            datePicker.datePickerMode = .dateTime // or .time, or .date
            datePicker.preferredDatePickerStyle = .wheels
            field.inputView = datePicker
        }
    }
}

在 iPhone SE(第 2 次)的模拟器上测试此代码时,选择日期存在问题:当我尝试选择任何日期时,它将第一个组件与未来的 3 个元素相撞:

此外,触发器中的任何点击都会ViewController触发此日期碰撞行为。

我创建了一个简单的复制项目:https ://github.com/egorshulga/datepicker-debugging 。在那里,我添加了另一个 UIDatePicker,将其放在文本字段下方,以表明对于常规选择器,该问题不可重现

这是带有问题演示的屏幕截图: demo 1 demo 2

我的环境:

我尝试过的(但没有奏效):

此外,我在其他模拟器(iPhone 12 Pro Max、iPhone 8)和真正的 iPhone 11 Pro Max 上检查了该问题 - 该问题不可重现。不幸的是,我没有 iPhone SE 2nd gen 作为真正的设备来检查这种行为。

iPhone SE 第二代模拟器有什么问题?

标签: iosuidatepicker

解决方案


嗯,据我所知,该问题在 iPhone SE 2nd Gen 模拟器 iOs 14.5 上不再重现(最新的 Xcode 版本 12.5 12E262 于 2021 年 4 月 26 日到货)。谢谢,苹果!


推荐阅读