xcodekeyboardinputaccessoryviewswift4.2

InputAccessoryView not removed


I'm making an iOS app, in which i use the inputaccessoryview to the UIViewController,

the problem is

Controller 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)
    }
}

Controller B

   class  ControllerB: UIViewController { 

    override var inputAccessoryView: UIView? {
        return nil
    }

    override var canBecomeFirstResponder: Bool {
        return false
    }

}

in the controller A the view is working as expected, but in controller B if i opened a keyboard and closed it the AccossoryView it will be visible, and it supposed not to be visible, any ideas?

Full Project InpoutViewTest


Solution

  • Follow this approach:

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

    and don't forget to set this flag to false in viewWillDisappear as well

     shouldBecomeFirstResponder = false