对于iOS中的resignFirstResponder,datePicker不会隐藏

时间:2016-12-03 11:27:59

标签: ios swift datepicker delegates

我有几个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开发的新手,但还无法找到错误。如果您需要更多信息,请告诉我。任何帮助或线索将不胜感激。

0 个答案:

没有答案