选择日期后,为什么我的日期选择器会自动隐藏?我想在点击“完成”按钮后隐藏

时间:2019-08-03 16:30:28

标签: ios swift uidatepicker

为什么选择日期后我的日期选择器会自动隐藏?我想在单击“完成”按钮后隐藏。

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var inputTextFiled: UITextField!

    private var datePicker:UIDatePicker?

    override func viewDidLoad() {
        super.viewDidLoad()

        datePicker = UIDatePicker()
        datePicker?.datePickerMode = .date
        datePicker?.addTarget(self, action: #selector(ViewController.donedatePicker(datePicker:)), for: .valueChanged)

        datePicker?.locale = NSLocale(
            localeIdentifier: "zh_CN") as Locale

        datePicker?.setValue(UIColor.white, forKey: "textColor")

        inputTextFiled.inputView = datePicker

        let toolBar = UIToolbar().ToolbarPiker(mySelect: #selector(ViewController.dismissPicker))

        inputTextFiled.inputAccessoryView = toolBar
    }

    @objc func donedatePicker(datePicker:UIDatePicker){
        //For date formate
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy年MM月dd日"
        inputTextFiled.text = formatter.string(from: datePicker.date)
        //dismiss date picker dialog
        self.view.endEditing(true)
    }

    @objc func cancelDatePicker(){
        //cancel button dismiss datepicker dialog
        self.view.endEditing(true)
    }

    @objc func dismissPicker() {
        view.endEditing(true)
    }
}

extension UIToolbar {
    func ToolbarPiker(mySelect : Selector) -> UIToolbar {
        let toolBar = UIToolbar()

        toolBar.barStyle = UIBarStyle.default
        toolBar.isTranslucent = true
        toolBar.tintColor = UIColor.black
        toolBar.sizeToFit()

        let doneButton = UIBarButtonItem(title: "done", style: UIBarButtonItem.Style.plain, target: self, action: mySelect)
        let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)
        let cancelButton = UIBarButtonItem(title: "cancel", style: UIBarButtonItem.Style.plain, target: self, action: Selector(("cancelDatePicker")))

        toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
        toolBar.isUserInteractionEnabled = true

        return toolBar
    }
}

这是我的全部代码,请帮助我,我想在单击“完成”按钮后隐藏。

1 个答案:

答案 0 :(得分:0)

您正在使用datePickeras textield的inputView,并且在donedatePicker中,您只是通过调用此self.view.endEditing(true)来强制结束编辑,因此,请从donedatePicker方法中删除它并在完成按钮中使用

 @objc func donedatePicker(datePicker:UIDatePicker){
    //For date formate
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy年MM月dd日"
    inputTextFiled.text = formatter.string(from: datePicker.date)


}