У меня есть 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