图示:
滑动返回功能
恢复滑动返回功能
** 分析:**
- 把系统的返回按钮覆盖
1.手势失效
1.1 手势被清空
1.2 手势代理是不是出问题,导致手势失效
#import "ZYNavigationController.h"
self.interactivePopGestureRecognizer.delegate = nil;
但是,此时,还有个bug,就是当我们滑动到当前栈顶控制器时,在滑动,在点击设置,就会造成卡顿现象。又称假死状态。 - 假死状态:程序还在运行,但是界面死了。不能操作。
解决:根控制器,不需要滑动,需手动管理。
** 1.遵守代理**
@interface ZYNavigationController ()<UIGestureRecognizerDelegate>
@end
** 2.设置代理**
- (void)viewDidLoad {
[super viewDidLoad];
// 控制手势什么时候触发,只有非控制器的时候才会触发
self.interactivePopGestureRecognizer.delegate =self;
}
** 3.实现代理方法**
#pragma mark -UIGestureRecognizerDelegate
/*是否触发手势/
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return self.childViewControllers.count > 1;
}
全屏滑动返回
为什么导航控制器的手势不是全屏滑动
手势图
将上述viewDidLoad改为以下
- (void)viewDidLoad {
[super viewDidLoad];
// 控制手势什么时候触发,只有非控制器的时候才会触发
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget: self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)];
[self.view addGestureRecognizer:pan];
pan.delegate = self;
self.interactivePopGestureRecognizer.enabled = NO;
}
效果图:
效果图:
网友评论