您的当前位置:首页正文

iOS- 13滑动返回按钮(全屏滑动)

来源:要发发知识网

图示:


滑动返回功能

恢复滑动返回功能
** 分析:**

  • 把系统的返回按钮覆盖
    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;
}
效果图:
效果图: