Интерактивный «удар по спине» по умолчанию отключен при использовании пользовательского интерактивного перехода - PullRequest
0 голосов
/ 06 сентября 2018

В моем приложении у меня есть пользовательский интерактивный переход для некоторых контроллеров представления. Я говорю о UINavigationController интерактивных переходах для push / pop. Для всех других контроллеров представления я хочу использовать интерактивный переход iOS по умолчанию (проводя слева направо, чтобы вернуться назад).

Чтобы активировать свой пользовательский интерактивный переход, я должен реализовать UINavigationControllerDelegate и реализовать обратный вызов animationControllerFor. Это отлично работает! Но если я попытаюсь вернуть nil для некоторых случаев, то есть я не хочу свой собственный переход и вместо этого использую переход по умолчанию, он полностью отключит обратные прокрутки!

Код для воспроизведения вопроса:

class MainNavigationController: UINavigationController, UINavigationControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
    }

    func navigationController(_ navigationController: UINavigationController,
                                 animationControllerFor operation: UINavigationControllerOperation,
                                 from fromController: UIViewController,
                                 to toController: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return nil
    }
}

Используйте это MainNavigationController, и все ваши удары назад будут отключены внутри этого контроллера навигации! Я не ожидал этого. Поскольку в документации сказано о возвращаемом значении:

Объект-аниматор, отвечающий за управление анимацией переходов, или nil, если вы хотите использовать стандартные переходы контроллера навигации.

https://developer.apple.com/documentation/uikit/uinavigationcontrollerdelegate/1621846-navigationcontroller

Кто-нибудь знает, что я делаю не так или это ошибка? Я пробовал это на iOS 11 и iOS 12 beta.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...