Swift: inputAccessoryView показывает пустой белый экран для UIToolbar при вызове

Я пытаюсь добавить UIToolbar на свою клавиатуру с помощью inputAccessoryView, но как только пользователь нажимает UITextField, я получаю пустой белый экран или загружаю белое представление, если я вставляю его в viewDidLoad(). Я пробовал несколько QA stackoverflow, и ни один из них, похоже, не работает для меня. Я тоже делаю это методом removeFromSuperview().

Инициализация:

@IBOutlet var MessegeView: UIToolbar!
@IBOutlet var MessegeTextField: UITextField!

Назначить UIToolbar UITextField: этот код приводит к пустому белому виду при загрузке.

override func viewDidLoad() {
     super.viewDidLoad()
     MessegeTextField.inputAccessoryView = MessegeView
     MessegeView.removeFromSuperview()    
}

БЕЗ removeFromSuperView(): я получаю следующую ошибку, и в этом есть смысл.

ERROR: 

should have parent view controller:<APPNAME.ChatViewController:XXXXXXXX> but requested parent is:<UIInputWindowController: XXXXXXXXXX>

Я слежу за несколькими QA Stackoverflow (но безрезультатно):

Как настраиваются представления:
 введите описание изображения здесь


person Brian Nezhad    schedule 18.08.2015    source источник


Ответы (1)


Если вы настраиваете свой пользовательский интерфейс в Storyboard, тогда вы не владеете объектами и не должны изменять иерархию. Вот почему автоматически сгенерированные свойства Xcode из раскадровки @IBOutlet weak var по умолчанию, вы не владеете ими и не должны управлять памятью.

Чтобы решить вашу проблему, вы должны либо использовать var MessegeView = UIToolbar(), либо инициализировать панель инструментов из отдельного .xib.

person InkGolem    schedule 18.08.2015
comment
Я пробую var MessegeView = UIToolbar() способ, и это не сработало - person Brian Nezhad; 18.08.2015
comment
Должен ли каждый пользовательский интерфейс быть программным? - person Brian Nezhad; 19.08.2015
comment
@NSGod нет, весь UI не должен быть программным, и вам не нужен removeFromSuperview(), если вы создаете его программно. - person InkGolem; 19.08.2015
comment
Не повезло, я даже инициализирую тулбар из отдельного .xib - person Brian Nezhad; 21.08.2015