iOS手势全屏滑动返回

iOS系统是自带侧滑返回的,但一定要是边缘返回,不是全屏,可能是手势冲突的的原因,苹果肯定是有自己的考虑。但是开发者们,思路开阔,开发了全屏滑动返回的效果,和大家分享一种最简单有效的方案。

首先,自定义一个NavigationController继承UINavigationController,然后添加自定义的手势调用系统自带的滑动手势的action方法,实现代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
        
    //右滑返回
    //获取系统自带滑动手势的target对象
    id target = self.interactivePopGestureRecognizer.delegate;
    //创建全屏滑动手势,调用系统自带滑动手势的target的action方法
    SEL handler = NSSelectorFromString(@"handleNavigationTransition:");
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:handler];
    pan.delegate = self;
    //添加全屏滑动手势
    [self.interactivePopGestureRecognizer.view addGestureRecognizer:pan];
    self.interactivePopGestureRecognizer.delegate = self;
}

然后在手势代理中要排除掉左滑,根控制器,返回中等情况,从而实现全屏右滑返回:

#pragma - Gesture delegate
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer {
    //控制器栈里只有一个,不响应
    if (self.viewControllers.count <= 1) {
        return NO;
    }
    //当控制器正在返回的时候,不响应
    if ([[self valueForKey:@"_isTransitioning"] boolValue]) {
        return NO;
    }
    //只能响应从左到右的滑动
    CGPoint translation = [gestureRecognizer translationInView:gestureRecognizer.view];
    if (translation.x <= 0) {
        return NO;
    }
    return YES;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值