Ошибка перехода из-за перехода CATransition при вызове метода делегата при завершении завершения - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть один UIViewController (пусть он называется контроллером A), который открывается поверх текущего контроллера (пусть он называется B) с постепенной анимацией.В контроллере А есть только один UITextVİew и два UIButton (Закрыть и Продолжить). Я могу успешно представить и отклонить его с помощью анимации.Однако, когда я вызываю метод делегата после завершения функции dismiss, textView остается на экране, пока не закончится вся анимация, а затем сразу исчезнет.Что может вызвать это?и как я могу это решить?

Код отзыва:

let transition = CATransition().fadeTransition()
        transition.isRemovedOnCompletion = true
        self.view.window!.layer.add(transition, forKey: nil)
        self.dismiss(animated: false, completion: {
            self.kvkkControllerProtocol?.backFromCamera() //If I comment this everything works great.
})

Как я объявляю протокол:

weak var aggrementDelegate: PushToCameraController?

Функция делегата:

 func pushToCameraController() {
    let controller = BarcodeReaderViewController()
    controller.comesFromKvkk = false
    self.navigationController?.pushViewController(controller, animated: true)
}

Как я представляю контроллер A:

 let kvkkController = AggrementViewController()
            kvkkController.aggrementDelegate = self
            kvkkController.kvkkControllerProtocol = self
            kvkkController.view.backgroundColor = .clear
            kvkkController.modalPresentationStyle = .overCurrentContext
            kvkkController.modalTransitionStyle = .crossDissolve
            kvkkController.callbackClosure = { [weak self] in
                self?.removeBlur()
            }

РЕДАКТИРОВАТЬ: я обнаружил, что если я комментирую коды внутри функции pushToCameraController (), все работает нормально.Кроме того, контроллер B находится внутри UINavigationController

...