У меня есть UIToolbar с TextField и Button как UIBarButtonItem. Я пытаюсь использовать эту панель инструментов как входную функцию для клавиатуры, когда пользователь нажимает TextField внутри панели инструментов.Создание UIToolbar с TextField вверх с клавиатурой
Я нашел this question, который пытается решить ту же проблему. К сожалению, решение не было эффективным.
Что я пытаюсь это:
class ChatViewController: UIViewController, CLLocationManagerDelegate, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var chatTableView: UITableView!
@IBOutlet weak var chatToolbar: UIToolbar!
@IBOutlet weak var textFieldBarButtonItem: UIBarButtonItem!
override func viewDidAppear(animated: Bool) {
super.viewDidLoad()
self.chatTableView.delegate = self
self.chatTableView.dataSource = self
self.chatToolbar.removeFromSuperview()
}
override var inputAccessoryView: UIView{
get{
return self.chatToolbar
}
}
override func canBecomeFirstResponder() -> Bool {
return true
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = UITableViewCell()
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 0
}
}
И что я получаю обратно есть:
*** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason:
'child view controller:<UICompatibilityInputViewController: 0x13ff34e00> should have parent view controller:
<App.ChatViewController: 0x13ff21cc0> but requested parent is:<UIInputWindowController: 0x1400b4600>'
Любые идеи?
Это не плохой подход, проблема должна заключаться в том, что 'inputAccessoryView:' вызывается перед 'viewDidAppear'. Аксессуарный вид не должен принадлежать ни одной иерархии представлений. BTW: принятый ответ тоже нормально – Omer
@Omer Отлично, и что вы предлагаете? – adolfosrs
Я думаю, что оба подхода прекрасны, я предпочитаю аксессуарInputView, потому что он более чист между другими преимуществами (то есть: более простой способ использования 'UIScrollViewKeyboardDismissModeInteractive', независимой от раскадровки/xib, безумного ограничения без ограничений = D). Следующая ссылка содержит obj-c proj с базовой реализацией с использованием вспомогательного метода просмотра, который вы можете развить на всякий случай, если хотите попробовать: https://www.dropbox.com/s/a4bsvz0ie95i3qn/KeyboardAccessory.zip? dl = 0 ||| не я использую панель инструментов, но вы можете использовать любой подкласс UIView, который вы хотите – Omer