我有几个textFields,当我触摸其中一个时,应该有一个datePicker来选择日期,所选日期应显示在该textfield中。此功能完美无缺,但在用户选择日期后,点击datePicker应该隐藏的任何位置,如键盘所做的那样。但它在我的代码中不起作用。所有其他键盘都按预期隐藏。
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
// self.view.endEditing(true)
return true
}
func textFieldDidBeginEditing(textField: UITextField){
if textField == dateOfBirth{
let datePicker = UIDatePicker()
textField.inputView = datePicker
datePicker.addTarget(self, action: "datePickerChanged:", forControlEvents: .ValueChanged)
}
}
func datePickerChanged(sender: UIDatePicker){
let formatter = NSDateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
// formatter.dateStyle = .ShortStyle
// formatter.timeStyle = .NoStyle
dateOfBirth.text = formatter.stringFromDate(sender.date)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
self.view.endEditing(true)
}
override func viewDidLoad() {
super.viewDidLoad()
dateOfBirth.delegate = self
firstname.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
此外,我尝试self.view.endEditing(true)
将当前键盘隐藏在textFieldShouldReturn()
内但未奏效。当我选择日期并点击其他地方时,模拟器停止响应。我的目标输出为:
由于未捕获的异常而终止应用 ' NSInvalidArgumentException',原因:' - [_ test.bController getCalendar:]:无法识别的选择器发送到实例0x79097b10'
我是iOS开发的新手,但还无法找到错误。如果您需要更多信息,请告诉我。任何帮助或线索将不胜感激。