У меня есть приложение чата, которое реализует плавающее поле ввода текста (аналогично приложению "Сообщения 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.