Программный вызов resignFirstResponder для UITextField без раскадровки - PullRequest
0 голосов
/ 26 января 2019

У меня есть пользовательский UITableViewCell с UITextField, который имеет переменную в пользовательском классе. Я не использую раскадровку, поэтому у меня нет выхода; Я делаю это программно.

Я использую textFieldDidEndEditing в моем UIViewController для получения значения, предоставленного пользователем.

    public func textFieldDidEndEditing(_ textField: UITextField)
    {
        print("textvalue=\(textField.text!)")
    }

Однако, если нажата кнопка панели навигации, textFieldDidEndEditing не вызывается. Я обычно знаю, что если бы у меня в UIViewController были выход и переменная текстового поля, я мог бы использовать resignFirstResponder, что, вероятно, вызвало бы вызов textFieldDidEndEditing, но, как я уже сказал, я не использую выход / раскадровку.

У меня нет этой переменной в моем UIViewController для текстового поля, поэтому мне нечем вызывать resignFirstResponder.

Полагаю, я мог бы позвонить resignFirstResponder в моем обычном UITableViewCell, но у меня нет доступа к моей модели

1 Ответ

0 голосов
/ 26 января 2019

Это может быть возможно либо путем идентификации вашего текстового поля с использованием таких идентификаторов, как tags и accessibility из UITableViewDelegate, затем используйте может использовать,

Установите delegate при создании ячейки в

  override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
    cell.txtField.delegate = self

  }

  // then it will be called UITextFieldDelegate

  public func textFieldDidEndEditing(_ textField: UITextField)
  {

  }

Или вы можете использовать согласно иерархии subviews:

self.view.endEditing(true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...