为什么选择日期后我的日期选择器会自动隐藏?我想在单击“完成”按钮后隐藏。
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
}
}
这是我的全部代码,请帮助我,我想在单击“完成”按钮后隐藏。
答案 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)
}