单击textField时键盘卡住以从DatePickerDialog获取日期

时间:2017-10-04 08:55:32

标签: ios swift swift3 swift2

我在点击时间textField时使用DatePickerDialog库来获取日期选择器。但是,当我点击时间textField之上的Trainer-2 textField然后键盘出现时很好但是当我点击时间textField然后键盘不会消失并且日期选择器出现在它后面因此页面卡住了。

以下是代码。

func textFieldDidBeginEditing(_ textField: UITextField) {

if textField == timeTextField {

self.view.endEditing(true)
self.getTime(textField: textField)

}

}

func getTime(textField: UITextField) {

DispatchQueue.main.async {

            DatePickerDialog().show(title: "DatePicker", doneButtonTitle: "Done", cancelButtonTitle: "Cancel", datePickerMode: .time) {
                (time) -> Void in
                guard let date_time = time else { return }

}
}

以下是图片。

1)单击Trainer-1文本字段时,会出现键盘,这很好。

when click on trainer-1 textfield

2)点击时间文本字段获取datePicker

when click on time textField

我只是希望键盘在点击时间textField时消失,以获取DatePicker。

感谢。

4 个答案:

答案 0 :(得分:0)

使用它。当您单击timeTextField时,键盘将消失

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
   if textField == timeTextField {
     self.view.endEditing(true)
     self.getTime(textField: textField)
   }
}

而不是

func textFieldDidBeginEditing(_ textField: UITextField) {}

答案 1 :(得分:0)

如果您在触摸timeTextField后甚至不想显示键盘,可以立即将其解除textFieldDidBeginEditing

func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField == timeTextField { 
        self.view.endEditing(true)
        self.getTime(textField: textField)
        textField.resignFirstResponder()
    }
}

答案 2 :(得分:0)

你可以尝试下面的...

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    //print("While entering the characters this method gets called")

    if(textField == timeTextField){
        return false;
    }

    return true;
}

 func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    textField.resignFirstResponder()
    return true
}

答案 3 :(得分:0)

使用这个, 在viewDidload中,将日期选择器设置为文本字段

的输入视图

override func viewDidLoad() { timeTextField.inputView = objDataPicker }