【发布时间】:2018-03-23 06:54:50
【问题描述】:
我有一个 inputAccessoryView 用于聊天应用程序中的文本输入。我使用以下代码实现了 inputAccessoryView:
override var inputAccessoryView: UIView? {
get {
setupInputToolbar()
return inputToolbar
}
}
override var canBecomeFirstResponder: Bool {
return true
}
这发生在作为 childViewController 的 viewController 中。我使用分段控件来显示这个带有 inputAccessoryView 的聊天 viewController。
我遇到的问题是 inputAccessoryView 只有在我将 self.becomeFirstResponder() 放在聊天 viewController(子)的 viewDidAppear() 中时才会显示。
如果我省略 self.becomeFirstResponder() 或将其放在 viewDidLoad() 或 viewWillAppear() 中,则不会显示 inputAccessoryView。
将它放在 viewDidAppear() 中的问题是它在视图已经在屏幕上之后显示动画,这不是我想要的。
【问题讨论】:
-
你试过
viewWIllLayoutSubviews吗? -
你的意思是把它放在哪里?
-
您说“如果我省略 self.becomeFirstResponder() 或将其放在 viewDidLoad() 或 viewWillAppear() 中,则不会显示 inputAccessoryView”。试着把它放在
viewWillLayoutSubviews() -
因为它被多次调用,所以检查
isFirstResponder不要设置多次。 -
将它放入 viewWillLayoutSubviews() 仍然会导致它在视图出现在屏幕上后出现动画
标签: ios swift xcode inputaccessoryview