2017-10-04 90 views
0

我使用DatePickerDialog庫來獲取日期選擇器,同時點擊時間textField。但是,當我點擊時間textField上方的Trainer-2 textField時,出現鍵盤很好,但是當我點擊時間textField時,鍵盤不會消失,並且日期選取器出現在它後面,因此頁面卡住了。鍵盤卡住,同時點擊textField從DatePickerDialog獲取日期

以下是代碼。

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

我只想消失鍵盤當點擊文本框時要GETT他的DatePicker。

謝謝。

+0

你爲什麼不與'inputView'嘗試了'時間textField' –

回答

0

使用此。當你點擊timeTextField,鍵盤就會消失

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

代替

func textFieldDidBeginEditing(_ textField: UITextField) {} 
0

如果你甚至不希望顯示觸摸timeTextField後的鍵盤,你可以關閉它在textFieldDidBeginEditing馬上:

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

這不起作用! – Priya

+0

鍵盤不會消失,或者您的意思不起作用,請具體說明。 –

+0

我的意思是鍵盤不會消失。 – Priya

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

使用此, 在viewDidLoad中,設置日期選擇器爲輸入查看文本字段

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