我正在制作一个iOS应用程序,在其中我使用inputaccessoryview到UIViewController,
问题是
控制器A
class ControllerA: UIViewController {
override var inputAccessoryView: UIView? {
return saveView
}
override var canBecomeFirstResponder: Bool {
return true
}
@IBAction func openVCB(_ sender: UIButton) {
let controllerB = controllerB.instantiate(fromAppStoryboard: .main)
let navigationController = UINavigationController(rootViewController: controllerB)
navigationController.navigationBar.isTranslucent = false
self.present(navigationController, animated: true)
}
}控制器B
class ControllerB: UIViewController {
override var inputAccessoryView: UIView? {
return nil
}
override var canBecomeFirstResponder: Bool {
return false
}
}在controller A中,视图按预期工作,但是在controller B中,如果我打开一个键盘并关闭它( AccossoryView ),它将是可见的,它应该是不可见的,有什么想法吗?
发布于 2018-10-23 07:06:49
遵循这一做法:
var shouldBecomeFirstResponder:Bool = false
override var canBecomeFirstResponder: Bool {
return shouldBecomeFirstResponder
}也不要忘记在viewWillDisappear中将此标志设置为false
shouldBecomeFirstResponder = false发布于 2018-10-22 19:59:50
我也遇到过这个问题。尝试将其放入您的viewWillDisappear(_ animated: Bool)函数中:
override func viewWillDisappear(_ animated: Bool) {
if let myInputAccessoryView = saveView {
myInputAccessoryView.removeFromSuperview()
}
}在转换到controller B之前,它应该删除输入附件视图。只需记住返回到controller A时要添加输入附件视图。如果您愿意,也可以尝试myInputAccessoryView.isHidden = true而不是removeFromSuperview()。
https://stackoverflow.com/questions/52932505
复制相似问题