我的UIDatePicker
有2个问题:
我必须在UITextField
上点击2次才能出现UIDatePicker
当我连续选择某项(例如一天)时,UIDatePicker
紧随其后关闭,我认为最好将其阻止并设置一个“完成”按钮
码:
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func tfDateNaissanceEditing(sender: UITextField) {
let datePickerView:UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Date
sender.inputView = datePickerView
datePickerView.addTarget(self, action: Selector("datePickerValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)
tfDateNaissance.resignFirstResponder()
}
func datePickerValueChanged(sender: UIDatePicker) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
dateFormatter.timeStyle = NSDateFormatterStyle.NoStyle
tfDateNaissance.text = dateFormatter.stringFromDate(sender.date)
tfDateNaissance.resignFirstResponder()
}
最佳答案
又是我。
对于Q1,您正在监听tfDateNaissanceEditing
函数的事件是什么?tfDateNaissance.resignFirstResponder()
的目的是什么?我猜发生了什么事,您在听startEditing
事件。因此,日期选择器在您第一次触摸时便被设置为输入视图,并在最后一行代码中立即被调用。
从理论上讲,只要在viewDidLoad
中添加以下代码,就可以实现所需的功能
...
// your other functions
let datePickerView : UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Date
UITextField.inputView = datePickerView
datePickerView.addTarget(self, action: Selector("datePickerValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)
Q2。当前,每次
DatePicker
的值更改时,它都会自行退出,因此在tfDateNaissance.resignFirstResponder()
函数中删除datePickerValueChanged
可以解决此问题。如果要使用带有“完成”按钮的自定义工具栏,则可以在viewDidLoad
中手动创建一个并将其设置为输入附件视图。您也可以使用this answer之类的导航栏来实现此目的顺便说一句,此问题不需要
didReceiveMemoryWarning
函数。关于ios - UITextField和UIDatePicker,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34431942/