iOS interactivePopGestureRecognizer включается автоматически после нажатия ViewController

У меня есть подкласс UINavigationController, который имеет максимум 4 ViewController в стеке. Давайте назовем их сначала ВК... четвертый ВК. Мой NavController может выполнять пользовательские переходы между VC и ios7/8. Предполагается, что обратный жест отключен и включен в зависимости от того, какой VC в данный момент находится на вершине стека. Я установил свой корневой VC (firstVC) в качестве делегата NavController и пытаюсь включить / отключить жест назад в методе делегата.

-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

    if ([viewController respondsToSelector:@selector(needsBackGestureEnabled)]) {

        [self.navigationController.interactivePopGestureRecognizer setEnabled:YES];
        NSLog(@"Back gesture enabled");
        self.navigationController.interactivePopGestureRecognizer.delegate = (id<UIGestureRecognizerDelegate>)self;

    } else {

        if ([navigationController.interactivePopGestureRecognizer isEnabled]) {
            [self.navigationController.interactivePopGestureRecognizer setEnabled:NO];
            NSLog(@"Back gesture disabled");
            self.navigationController.interactivePopGestureRecognizer.delegate = nil;
        }
    }

}

Это работает как шарм за исключением одного глюка. Я чувствую, что короткая схема может лучше объяснить ситуацию:

FirstVC - [CustomTran] -> SecondVC - [push] -> ThirdVC - [push] -> FourthVC

FourthVC - единственный, у которого есть селектор -needsBackGestureEnabled, но после перехода со второго на третий обратный жест включается сам по себе. Даже если кнопка "Назад" заменена CustomBarButtonItem. Я чувствую, что выполнение анимации по умолчанию -pushViewController делает жест возврата каким-то образом включенным. Я попытался явно отключить его в моем подклассе NavController в -pushViewController, но это ничего не изменило. Есть идеи, почему это происходит и как это исправить?

0 ответов

Другие вопросы по тегам