在 iOS13 中点击日期选择器不会弹出选择器视图

Tapping on Date Picker does not popup Picker view in iOS13

在应用程序中,当我点击应该给我一个 UIDatePickerUITextField 时,在将 iPhone 更新为 [=15= 时没有显示 UIDatePicker ]. 适用于 iOS 12+ 版本。

我正在研究最新的 Xcode 11macOS Mojave 10.14.6

这是我使用的代码:

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    let dateString: String!
    activeTextField = textField

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd-MM-yyyy"

    if activeTextField == fromDateTextField && fromDateTextField.text != "" {
        dateString = fromDateTextField.text
        let date = dateFormatter.date(from: dateString!)
        datePickerView.setDate(date!, animated: false)

    } else if activeTextField == toDateTextField && activeTextField.text != "" {
        dateString = toDateTextField.text
        let date = dateFormatter.date(from: dateString!)
        datePickerView.setDate(date!, animated: false)
    }

    UIView.animate(withDuration: 0.3) {
        self.datePickerContainerView.frame = CGRect(x: 0,
                                                    y: UIScreen.main.bounds.size.height - 250,
                                                    width: UIScreen.main.bounds.size.width,
                                                    height: 250)
    }

    return false
}
class ViewController: UIViewController {

@IBOutlet weak var dateField: UITextField!
var datePicker :UIDatePicker!

override func viewDidLoad() {
    super.viewDidLoad()
    datePicker = UIDatePicker.init(frame: CGRect(x: 0, y: 0, width: view.bounds.size.width, height: 200))
    datePicker.addTarget(self, action: #selector(self.dateChanged), for: .allEvents)
    dateField.inputView = datePicker
    let doneButton = UIBarButtonItem.init(title: "Done", style: .done, target: self, action: #selector(self.datePickerDone))
    let toolBar = UIToolbar.init(frame: CGRect(x: 0, y: 0, width: view.bounds.size.width, height: 44))
    toolBar.setItems([UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil), doneButton], animated: true)
    dateField.inputAccessoryView = toolBar
}

@objc func datePickerDone() {
    dateField.resignFirstResponder()
}

@objc func dateChanged() {
    dateField.text = "\(datePicker.date)"
}
}

试试这个

这对我有用: 初始化:让 picker = UIDatePicker() 并在 viewDidLoad

中调用 createToolbar 函数
 func createToolbar() {

    let toolbar = UIToolbar()
    toolbar.sizeToFit()
    let doneButton = UIBarButtonItem(title: "Set Date", style: .done, target: nil, action:  #selector(showDate))
    toolbar.setItems([doneButton], animated: false)
    fromDateTextField.inputAccessoryView = toolbar
    fromDateTextField.inputView = picker
    toDateTextField.inputAccessoryView = toolbar
    toDateTextField.inputView = picker
    picker.datePickerMode = .date

}

 @objc func showDate() {

    let dateFormat = DateFormatter()
    dateFormat.dateFormat = "dd-MM-yyyy"
    let string = dateFormat.string(from: picker.date)


    if fromDateTextField.isFirstResponder {
        fromDateTextField.text = string
    }

    if toDateTextField.isFirstResponder {
        toDateTextField.text = string
    }
    self.view.endEditing(true)
}

感谢@rmmaddy 的意见:)