首页 > 解决方案 > 在 iOS13 中点击日期选择器不会弹出选择器视图

问题描述

在应用程序中,当我点击UITextField应该给我一个UIDatePicker不显示我UIDatePicker更新 iPhone 到iOS 13. 适用于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
}

标签: iosswiftdatepickerios13

解决方案


这对我有用:初始化:让选择器 = 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 的输入:)


推荐阅读