Search code examples
iosobjective-cxcodeuinavigationcontrolleruigesturerecognizer

No Swipe Back when hiding Navigation Bar in UINavigationController


I love the swipe pack thats inherited from embedding your views in a UINavigationController. Unfortunately i cannot seem to find a way to hide the NavigationBar but still have the touch pan swipe back gesture. I can write custom gestures but I prefer not to and to rely on the UINavigationController back swipe gesture instead.

if I uncheck it in the storyboard, the back swipe doesn't work

enter image description here

alternatively if I programmatically hide it, the same scenario.

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.navigationController setNavigationBarHidden:YES animated:NO]; // and animated:YES
}

Is there no way to hide the top NavigationBar and still have the swipe?


Solution

  • A hack that is working is to set the interactivePopGestureRecognizer's delegate of the UINavigationController to nil like this:

    [self.navigationController.interactivePopGestureRecognizer setDelegate:nil];
    

    But in some situations it could create strange effects.