我有一个非常典型的聊天屏幕,其中包含一个包含文本字段的InputAccessoryView . 最初加载屏幕时,键盘是隐藏的,因此文本字段位于屏幕的底部 . 当用户点击文本字段时,键盘显示并且InputAccessoryView随键盘向上移动 .
这里显示了一个例子:
但是,如果我将相同的UIViewController放在 UIPageViewController
中,则默认情况下不会出现InputAccessoryView . 只有通过点击其他文本框强制显示键盘才会出现 .
这里的例子:
此外,如果切换页面, InputAccessoryView
会再次消失 .
设置InputAccessoryView的代码如下所示:
class ViewController: UIViewController {
var chatInputView: ChatInputView?
override var canBecomeFirstResponder: Bool {
return true
}
override var inputAccessoryView: UIView? {
return self.chatInputView
}
override func viewDidLoad() {
super.viewDidLoad()
let chatInputView = ChatInputView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 124))
chatInputView.awakeFromNib()
self.chatInputView = chatInputView
}
InputAccessoryView是通过XIB文件创建的,但非常标准 .
所有代码都可以在https://github.com/SuperTango/InputAccessoryView中找到
有两个提交 . 第一个提交被标记为“not_working”,并通过将默认的ViewController作为UIPageViewController子类来显示不可用的版本 . 第二个提交被标记为“working”,并且仅将默认的ViewController设置为图像中的ViewController,
在UIPageViewController中放置UIViewController时,是否有任何方法可以默认显示InputAccessoryView?
谢谢!
1 回答
为了让
inputAccessoryView
显示在你的ViewController
上,你需要将你的ViewController
设置为firstResponder
,当你使用pageViewController时你有多个ViewControllers
,这意味着你需要在ViewController
上调用self.becomeFirstResponder()
,只要它在屏幕上变成您可以在设置
chatInputView
或viewDidAppear
后调用它