新的 UIDatePicker 作为 inputView

New UIDatePicker as inputView

在 iOS 13 和更早版本中,我们可以将 UIDatePicker 用作 inputView,但现在呢?

我尝试使用 ios14,但在点击文本字段时没有任何附加内容。

var timePicker = UIDatePicker()
self.timePicker.preferredDatePickerStyle = UIDatePickerStyle.wheels
self.timePicker.datePickerMode = UIDatePicker.Mode.time
self.timePicker.minuteInterval = 5
self.startTimeTxtField.inputView = self.timePicker

正常吗?

var datePickerView = UIDatePicker()   
if #available(iOS 14.0, *) {
    datePickerView.frame = CGRect(x: 50, y: 50, width: ScreenWidth, height: 250.0)
    datePickerView.preferredDatePickerStyle = .wheels
    datePickerView.datePickerMode = .date
} else {
    datePickerView.datePickerMode = .date
}

显然,这是目前已知的问题。解决方法是在将日期选择器指定为输入视图之前调用 sizeToFit

Swift

let datePicker = UIDatePicker()
datePicker.datePickerMode = .time
datePicker.locale = .current
if #available(iOS 14, *) {
    datePicker.preferredDatePickerStyle = .wheels
    datePicker.sizeToFit()
}
textField.inputView = datePicker

Objective-C

if (@available(iOS 14.0, *)) {
    [datePicker setPreferredDatePickerStyle:UIDatePickerStyleWheels];
    [datePicker setDatePickerMode:UIDatePickerModeDate]; //optional
    [datePicker sizeToFit];
}

苹果forum的回答请看这里

这是我的工作

      let datePicker = UIDatePicker()
        datePicker.datePickerMode = .date //change the mode
        datePicker.locale = .current
        if #available(iOS 14, *) {
            datePicker.preferredDatePickerStyle = .wheels
            datePicker.sizeToFit()
        }
        birthdateTF.inputView = datePicker