InputAccessoryView не удален - PullRequest
       42

InputAccessoryView не удален

0 голосов
/ 22 октября 2018

Я делаю приложение для 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 ]

0 голосов
/ 23 октября 2018

Следуйте этому подходу:

var shouldBecomeFirstResponder:Bool = false

override var canBecomeFirstResponder: Bool {
return shouldBecomeFirstResponder
}

и не забудьте также установить этот флаг на false в viewWillDisappear

 shouldBecomeFirstResponder = false
0 голосов
/ 22 октября 2018

Я тоже столкнулся с этой проблемой.Попробуйте добавить это в вашу функцию viewWillDisappear(_ animated: Bool):

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

. Перед переходом на controller B следует удалить вспомогательное представление ввода.Просто не забудьте добавить вспомогательный вид ввода при возврате к controller A.Вы также можете попробовать myInputAccessoryView.isHidden = true вместо removeFromSuperview(), если хотите.

...