我在点击时间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文本字段时,会出现键盘,这很好。
2)点击时间文本字段获取datePicker
我只是希望键盘在点击时间textField时消失,以获取DatePicker。
感谢。
答案 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
}