У меня есть UICollectionViewController с inputAccessoryView. Все работает отлично, пока я не представлю UIViewController, а затем вспомогательное представление исчезнет. Пытаюсь получить базовые функции приложения Chat.
Я реализовал в представлении коллекции:
override var inputAccessoryView: UIView? {
get {
return inputContainerView
}
}
override var canBecomeFirstResponder: Bool {
return true
}
override func becomeFirstResponder() -> Bool {
return true
}
Как было предложено в нескольких других потоках, я также вызываю (в представлении коллекции),
view.resignFirstResponder()
view.inputAccessoryView?.reloadInputViews()
view.becomeFirstResponder()
после увольнения UIViewController, но безрезультатно. print (view.isFirstResponder) по-прежнему печатает false
. Я пробовал почти все комбинации трех вышеперечисленных строк в разных местах своего кода. Думаю, мне не хватает чего-то простого.
view.becomeFirstResponder()
в вашviewDidAppear
, который гарантирует, что inputAccessoryView будет там каждый раз, когда вы подходите к экрану. - person Honey   schedule 04.06.2017viewDidAppear
(который я никогда не использовал) для представления loginController, и это сработало. Мне никогда не приходилось вызыватьview.becomeFirstResponder()
. Мой метод таймера, приведенный ниже, по сути, выполнял то же самое, но это гораздо менее хакерский и профессиональный. Очень признателен. я запомню это - person Sanzio Angeli   schedule 05.06.2017viewDidLoad
, я представил его в предложенном вамиviewDidAppear
. Когда этот контроллер представления был представлен отviewDidLoad
, он, казалось, навсегда удалил свойство первого респондента. Вызовview.becomeFirstResponder
в одиночку вviewDidAppear
почему-то не работал. - person Sanzio Angeli   schedule 05.06.2017