Here is a
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backBtnClicked:)];
Because you've changed the left bar button item, you're telling the navigation controller to stop managing the navigation-based back-actions that the user can take.
To fix it, you can tell the navigation controller to continue accepting those gestures on the current view controller by using:
self.navigationController.interactivePopGestureRecognizer.delegate = self;
self if your view controller.
UIViewController privately implements
UIGestureRecognizerDelegate, so you'll get a warning for this, but you can mitigate this by adding in the protocol conformance (
<UIGestureRecognizerDelegate>) to your header, or to a class extension.