I have added 'interactivePopGestureRecognizer' in some viewcontroller, also give back button on topbar . When user use Pop Gesture and push/pop view at that time it will freez top navigation controller view . After some time it will crash with "[viewcontroller hash]: message sent to deallocated instance."

METHOD

-(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;
}

I have TabBar type application.

1

There are 1 best solutions below

3
On

The crash would be explained by you somehow failing to execute

self.navigationController.interactivePopGestureRecognizer.delegate = nil;

in viewDidDisappear. Can you confirm that your delegate is actually being removed by stepping through it in the debugger?