У меня есть приложение чата, которое реализует плавающее поле ввода текста (аналогично приложению "Сообщения iOS") в качестве inputAccessoryView
моего ChatViewController
(см. Документацию Apple).
class ChatViewController: UIViewController {
override var inputAccessoryView: UIView? {
return chatInputView
}
override var canBecomeFirstResponder: Bool {
return true
}
...
Мой ChatViewController
имеет дочерний контроллер представления ChatTableViewController
, в котором есть ячейки, содержащие UITextField
, текстовое содержимое которого можно редактировать. Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь UITextField
на ячейку UITextField
, inputAccessoryView
UITextView
отказывается оставить статус первого респондента, что препятствует редактированию содержимого в UITableViewCell
. Следующее предупреждение регистрируется в консоли:
First responder warning: '<UITextView: 0x7fc041041c00;
frame = ...' rejected resignFirstResponder when being removed from hierarchy
Я попытался вызвать resignFirstResponder
и endEditing
для UIInputView
и UITextView
напрямую, но безуспешно. Я не хочу, чтобы ChatViewController
от статуса первого респондента, так как это привело бы к исчезновению inputAccessoryView
.
Редактировать: я также получаю предупреждение при удалении клавиатуры в интерактивном режиме (вместо нажатия на UITableViewCell
UITextField
.