覆盖inputAccessoryViewController的正确方法是什么,以便它可以在iOS 9和iOS 10上运行

时间:2017-06-23 16:14:05

标签: ios swift ios9 ios10 inputaccessoryview

我正在尝试实现一个漂浮在键盘上的textView(比如iMessage应用程序)我想使用.main{ min-height: 100vh; }以便我可以拥有视图控制器,而不仅仅是覆盖{{1}的视图}。我已经编写了下面的代码,但它在iOS 9中有一个问题,当你点击时,textView会消失,键盘上的textView会弹出。它在iOS 10中运行良好。

inputAccessoryViewController

我试图弄清楚出了什么问题所以我确实覆盖了inputAccessoryViewclass ViewController: UIViewController { var textEntryController = TextEntryController.fromNIB() override var inputAccessoryViewController: UIInputViewController? { return self.textEntryController } override var canBecomeFirstResponder: Bool { return true } } ,并在每种方法中加入了断点。

inputAccessoryViewController

这解决了textview在iOS 9上消失的问题,但我不认为这是对的。这可能会破坏视图控制器层次结构。

观察: 在iOS 9和iOS 10上,当我启动应用程序时,都会调用这两种方法 仅在iOS 9上,当我点击文本字段时,inputAccessoryView被调用。 在iOS 10上,当我点击文本视图时, override var inputAccessoryViewController: UIInputViewController? { return self.textEntryController //break point } override var inputAccessoryView: UIView? { return self.textEntryController.view //break point } inputAccessoryView会被调用。

覆盖inputAccessoryView的正确方法是什么?我认为我不应该同时覆盖inputAccessoryViewControllerinputAccessoryViewController

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,在我的案例中,未调用inputAccessoryViewControllercanBecomeFirstResponder覆盖方法。这是因为ViewController不是UIViewController的子类。