interactivePopGestureRecognizer некоторое время замораживает представление касания, и это также вызовет [хэш viewcontroller]: сообщение отправлено на освобожденный экземпляр?

Я добавил 'interactivePopGestureRecognizer' в некоторый viewcontroller, а также кнопку возврата на верхней панели. Когда пользователь использует Pop Gesture и push/pop view в это время, он замораживает верхнее представление контроллера навигации. Через некоторое время произойдет сбой с "[viewcontroller hash]: сообщение отправлено на освобожденный экземпляр".

МЕТОД

-(void)viewDidAppear:(BOOL)animated{
         [super viewDidAppear:animated];

            //Pop GESTURE
            if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
                self.navigationController.interactivePopGestureRecognizer.enabled = true;
                self.navigationController.interactivePopGestureRecognizer.delegate = self;
    }
    -(void)viewDidDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
        //Remove Pop Gesture
        if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.navigationController.interactivePopGestureRecognizer.enabled = false;
            self.navigationController.interactivePopGestureRecognizer.delegate = nil;
        }
    }

DELEGATE METHOD
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    // add whatever logic you would otherwise have

    return YES;
}

У меня есть приложение типа TabBar.

1 ответ

Сбой объясняется тем, что вы как-то не выполняете

self.navigationController.interactivePopGestureRecognizer.delegate = nil;

в viewDidDisappear, Можете ли вы подтвердить, что ваш делегат на самом деле удаляется, пройдя через него в отладчике?

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