Правильный способ UITextField стать firstResponder в UITableViewCella после удара - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть UITableView с некоторыми ячейками, каждая из которых имеет UITextField.Проведя пальцем по строке и нажав кнопку прокрутки, я хочу, чтобы UITextField соответствующей ячейки стал первым респондентом, чтобы немедленно открыть клавиатуру.

Я реализовал editActionsForRow с UITableViewRowAction, который выглядит следующим образом

    UITableViewRowAction(style: .destructive, title: NSLocalizedString("Failed", comment: String())) { (_, indexPath) in
          if let cell = tableView.cellForRow(at: indexPath) as? ExerciseSetTableViewCell {
              if cell as? AnotherCell != nil {
              } else {
                 cell.titleTextField.isUserInteractionEnabled = true // Dont forget to disable!
                 cell.titleTextField.becomeFirstResponder()
              }
          }

Это больше не работает должным образом с iOS 13 .TextField становится первым респондентом и примерно через 1 секунду магически уходит в отставку первого респондента, что заставляет клавиатуру снова закрыться.Также вся ячейка скрывается от пользовательского интерфейса.

неработающая анимация

Я уже нашел обходной путь: Если я задерживаю выполнение becomeFirstResponder при открывающей анимации анимации жеста смахивания в ячейке textField корректно не переставляет resignFirstResponder.

грязный обходной путь

Хотя это довольно грязно, и мне интересно, что было бы правильным способом сделать это.

Примечание: Я уже обнаружил, получив много разметочных предупреждений, что вызов cellForRow в обратном вызове UITableView - это нет-нет.Я до сих пор не уверен, как бы я подошел к этому, поскольку мне нужно найти правильную ячейку для indexPath

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