中间滑动返回

中间滑动返回

  • 我们如果想要滑动中间就可以返回上一页,我们需要自己重新设置
  • 但是我们还是想要左滑返回的样子,所以我们需要用系统给我们设定好的方法来放到我们自己的手势中
//得到系统手势
UIScreenEdgePanGestureRecognizer *gest = self.interactivePopGestureRecognizer;
//得到系统手势中管理左滑返回的属性
NSArray *targets = [gest valueForKeyPath:@"_targets"];
* 他这个取出来是一个数组,数组里面的属性才是真正管理的
id target = [targets[0] valuesForKeyPath:@"_target"];
//添加自己的手势(滑动)
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@Selector(handleNavigationTransition:)];
[self.view addGestureRecognizer:pan];
  • handleNavigationTransition:系统返回的方法
  • target系统控制返回的属性(使用KVC方法获取私有属性)

简单实现

//清空系统代理
self.interactivePopGestureRecognizer.enabled = NO;
//设置系统监听
id target = self.interactivePopGestureRecognizer.delegate;
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@Selector(handleNavigationTransition:)];
[self.view addGestureRecognizer:pan];
  • 我们直接让系统代理监听自己
  • 在做这个之前,我们需要将系统的代理清空
  • **但是这个有BUG,在他是根控制器的时候滑动还会出现问题,所以我们需要在滑动开始的时候进行判断,如果他不是根控制器可以滑动,是根控制器返回NO
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
   BOOL open = self.viewControllers.count > 1;
   return open;
}
  • 在我们创建自控制器的时候,原理是堆的存储形式,根控制器的count为1,所以大于1的时候就是子控制器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iOS开发疯狂者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值