上一篇分析了为什么自定义返回按钮后,系统默认的边缘手势返回会失效,以及解决的一些办法,但是,这个手势只是在边缘有效,无法达到全屏有效,最理想的是全屏手势有效,经典的五步:
1.自定义滑动手势识别器,让系统的私有类对象去调用系统提供的返回切换页面功能
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)];
2.加到导航控制器当前的栈顶视图上,可以理解为手势识别器类似于一个膜贴到view上
[self.view addGestureRecognizer:pan];
3.设置pan手势识别器的代理为当前对象,用于实现代理方法,控制非控制器下才可以响应滑动返回
pan.delegate = self;
4.关闭边缘手势识别器
self.interactivePopGestureRecognizer.enabled = NO;
5.实现代理方法
#pragma mark -UIGestureRecognizerDelegate
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return self.childViewControllers.count > 1;
}