I have a view controller which is nested within a UINavigationController
.
I have implemented the iOS 7 interactivePopGestureRecognizer to enable the user to gesture to pop a VC off the stack.
Within the VC i have a scrollview and whilst the user is not at the top of the scrollview I hide all the chrome (Navigation bar and status bar) to place focus on the content.
However with the navigation bar hidden, the interactivePopGestureRecognizer is not working.
I have tried enabling it after it has disappeared and verified it is not nil, however it still doesn't work.
Is there anything I am missing?
Simple solution
Just set the hidden property of the navigation bar not through navigation controller
Just use these two lines
This doesn't seem to work for me. I followed Keithl's blog post. Neither did that work.
I ultimately settled with
UISwipeGestureRecognizer
. It seems to do what it says.I used this.
self.navigationController.interactivePopGestureRecognizer.delegate = self;
also in my UINavigationController class to disable interactivePopGestureRecognizer during transitions.
the reason of disable interactivePopGestureRecognizer in rootViewController is:when swipe from edge in rootViewController and then tap something to push in next viewController, the UI won't accept any touches now.Press home button to put app in background , and then tap it to enter foreground...
Set your UIViewController subclass as the gestureRecognizer's delegate:
That's it!
Adding these two lines to
-(void)viewDidAppear:(BOOL)animated
worked for me.And dont forget to call
<UIGestureRecognizerDelegate>
to.h
file.