首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InputAccessoryView未移除

InputAccessoryView未移除
EN

Stack Overflow用户
提问于 2018-10-22 15:08:03
回答 2查看 620关注 0票数 1

我正在制作一个iOS应用程序,在其中我使用inputaccessoryviewUIViewController

问题是

控制器A

代码语言:javascript
复制
   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

代码语言:javascript
复制
   class  ControllerB: UIViewController { 

    override var inputAccessoryView: UIView? {
        return nil
    }

    override var canBecomeFirstResponder: Bool {
        return false
    }

}

controller A中,视图按预期工作,但是在controller B中,如果我打开一个键盘并关闭它( AccossoryView ),它将是可见的,它应该是不可见的,有什么想法吗?

全项目InpoutViewTest

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-23 07:06:49

遵循这一做法:

代码语言:javascript
复制
var shouldBecomeFirstResponder:Bool = false

override var canBecomeFirstResponder: Bool {
return shouldBecomeFirstResponder
}

也不要忘记在viewWillDisappear中将此标志设置为false

代码语言:javascript
复制
 shouldBecomeFirstResponder = false
票数 2
EN

Stack Overflow用户

发布于 2018-10-22 19:59:50

我也遇到过这个问题。尝试将其放入您的viewWillDisappear(_ animated: Bool)函数中:

代码语言:javascript
复制
override func viewWillDisappear(_ animated: Bool) {
   if let myInputAccessoryView = saveView {
      myInputAccessoryView.removeFromSuperview()
   }
}

在转换到controller B之前,它应该删除输入附件视图。只需记住返回到controller A时要添加输入附件视图。如果您愿意,也可以尝试myInputAccessoryView.isHidden = true而不是removeFromSuperview()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52932505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档