我正在尝试实现一个在键盘上浮动的 textView(如 iMessage 应用程序),我想使用它inputAccessoryViewController
以便我可以拥有视图控制器,而不仅仅是通过覆盖的视图inputAccessoryView
。我已经编写了下面的代码,但它在 iOS 9 中存在问题,当您点击时 textView 消失并且键盘上的 textView 弹出。它在 iOS 10 中运行良好。
class ViewController: UIViewController {
var textEntryController = TextEntryController.fromNIB()
override var inputAccessoryViewController: UIInputViewController? {
return self.textEntryController
}
override var canBecomeFirstResponder: Bool {
return true
}
}
我试图弄清楚出了什么问题,所以我确实覆盖了两者inputAccessoryViewController
,inputAccessoryView
并在每个方法中放置了断点。
override var inputAccessoryViewController: UIInputViewController? {
return self.textEntryController //break point
}
override var inputAccessoryView: UIView? {
return self.textEntryController.view //break point
}
这解决了 iOS 9 上 textview 消失的问题,但我不认为它是正确的。这可能会破坏视图控制器层次结构。
观察:在 iOS 9 和 iOS 10 上,当我启动应用程序时,这两种方法都会被调用。在 iOS 9inputAccessoryView
上,只有当我点击文本字段时才会调用。在 iOS 10 上,当我点击 textview 时,两者都会被调用inputAccessoryView
。inputAccessoryViewController
什么是覆盖的正确方法inputAccessoryViewController
?我认为我不应该同时覆盖inputAccessoryView
和inputAccessoryViewController
。