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

apeeds0o  于 2022-11-06  发布在  Swift
关注(0)|答案(4)|浏览(165)

我正在使用DatePickerDialog库在单击时间文本字段时获取日期选择器。但是,当我单击时间文本字段上方的Trainer-2文本字段时,键盘出现,这很好,但当我单击时间文本字段时,键盘没有消失,日期选择器出现在它后面,因此页面卡住。
下面是代码。

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文本字段时,键盘出现,这是正常的。

2)当单击时间文本字段以获取datePicker时

我只是希望键盘消失时,点击时间文本字段,以获得他的日期选择器。

  • 谢谢-谢谢
goucqfw6

goucqfw61#

你可以试着像...

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
}
lawou6xi

lawou6xi2#

使用这个当您点击timeTextField时,键盘会消失

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

取而代之

func textFieldDidBeginEditing(_ textField: UITextField) {}
rjzwgtxy

rjzwgtxy3#

如果您不想在触摸timeTextField后显示键盘,您可以在textFieldDidBeginEditing中立即关闭它:

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

n6lpvg4x4#

在viewDidload中使用此选项,将日期选择器设置为该文本字段的输入视图
override func viewDidLoad() { timeTextField.inputView = objDataPicker }

相关问题