代码之家  ›  专栏  ›  技术社区  ›  a.masri

未删除InputAccessoryView

  •  1
  • a.masri  · 技术社区  · 8 年前

    我正在制作一个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 它是可见的,不应该是可见的,有什么想法吗?

    完整项目 InpoutViewTest

    2 回复  |  直到 8 年前
        1
  •  2
  •   a.masri    8 年前

    遵循以下方法:

    var shouldBecomeFirstResponder:Bool = false
    
    override var canBecomeFirstResponder: Bool {
    return shouldBecomeFirstResponder
    }
    

    别忘了在 viewWillDisappear 也

     shouldBecomeFirstResponder = false
    
        2
  •  0
  •   guard working else panic    8 年前

    我也遇到了这个问题。试着把这个放进你的 viewWillDisappear(_ animated: Bool) 功能:

    override func viewWillDisappear(_ animated: Bool) {
       if let myInputAccessoryView = saveView {
          myInputAccessoryView.removeFromSuperview()
       }
    }
    

    在转换为 controller B . 当返回到 controller A . 你也可以试试 myInputAccessoryView.isHidden = true 而不是 removeFromSuperview() 如果你愿意的话。