利用手势全屏返回最终方案

上一篇分析了为什么自定义返回按钮后,系统默认的边缘手势返回会失效,以及解决的一些办法,但是,这个手势只是在边缘有效,无法达到全屏有效,最理想的是全屏手势有效,经典的五步:


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;

}

你可能感兴趣的:(利用手势全屏返回最终方案)