Клавиатура не закрывается при отображении MDTimePicker - PullRequest
1 голос
/ 28 февраля 2020

**enter image description here**

У меня проблема с отображением таймера. Есть два текстовых поля: 1. первое открывает цифровую клавиатуру. 2. Секунда открывает время выбора материалов управления. Как только я начинаю редактировать первый TF, и если я нажимаю на второй TF, цифровая клавиатура не закрывается, даже если я нажимаю кнопку Готово. кнопка done создается с помощью панели инструментов, а метод содержит код «view.endEditing». Он работает нормально, но не в вышеуказанных условиях.

override func viewDidLoad() {
    super.viewDidLoad()
    rateInPointsTextField.delegate = self
}

extension MyAvailabilityVC : UITextFieldDelegate{
    let toolbar = UIToolbar()
    toolbar.sizeToFit()

    //done button for toolbaar
    let done = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(donePressed))
    toolbar.setItems([done], animated: false)

    self.rateInPointsTextField.inputAccessoryView = toolbar



@objc func donePressed(){
    self.view.endEditing(true)

}



func textFieldDidBeginEditing(_ textField: UITextField) {

    if textField == self.fromTimeTextField{

        let timePicker = MDTimePickerDialog()
        timePicker.delegate = self
        timePicker.tag = 100
        timePicker.clockMode = .mode12H
        timePicker.show()
        self.view.endEditing(true)
    }
}

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

    self.rateInPointsTextField.resignFirstResponder()
    return true
}

}

1 Ответ

2 голосов
/ 28 февраля 2020

Подтвердите UITextFieldDelegate в вашем контроллере представления и установите делегат TF на себя

class YourViewController: UIViewController, UITextFieldDelegate {

  @IBOutlet weak var your_tf: UITextField!
  override func viewDidLoad() {
        super.viewDidLoad()
        your_tf.delegate = self;

   }
   ....

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

        textField.resignFirstResponder()
        return true
    }

}

Теперь, когда вы нажмете кнопку «Готово / возврат» на клавиатуре, клавиатура будет отклонена. Если вы хотите отказаться от созданной вами кнопки, сделайте вызов из готового @Action fun на textFieldShouldReturn(your_tf) вот так.


...
@objc func donePressed(){
    textFieldShouldReturn(your_tf)

}


...