iOS滑动返回上一级

本文介绍如何在不遵循导航栏结构的iOS项目中,通过添加UIScreenEdgePanGestureRecognizer实现滑动返回上一级的功能。代码示例包括手势的添加、手势响应方法以及解决与UITableView手势冲突的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在IOS中如果项目遵循了导航栏的结构,就会拥有手势滑动返回的漂亮效果,

不过,我们公司的项目没有遵循导航栏的结构,但是产品需求有需要添加一个滑动返回上一层级的功能,则就用到了IOS7添加的

UIScreenEdgePanGestureRecognizer这个类,它是继承于UIPanGestureRecognizer的一个类,则项目中使用的时候,就必须遵循

UIGestureRecognizerDelegate这个代理了。

具体代码如下:

//添加右滑返回手势

    if (isIOS7) {

        UIScreenEdgePanGestureRecognizer *left2rightSwipe = [[UIScreenEdgePanGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeGesture:)];

        [left2rightSwipe setDelegate:self];

        [left2rightSwipe setEdges:UIRectEdgeLeft];

        [self.view addGestureRecognizer:left2rightSwipe];

    }

手势响应的方法:

#pragma mark -- 在每个视图的左侧,添加右滑返回上一级的手势

- (void)handleSwipeGesture:(UIScreenEdgePanGestureRecognizer *)gestureRecognizer

{

    [self.navigationController popViewControllerAnimated:YES];

}


手势的方向可以是上、下、左、右四个方向,

此时左滑返回是无法响应的,因为工程里面页面添加了一个UITableVIew,有其他手势的干扰,则此时需要解析你的滑动返回的手势,代码如下:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

{

    if ([gestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]]) {

        return YES;

    }else{

        return NO;

    }

}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

{

    BOOL result = NO;

    if ([gestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]]) {

        result = YES;

    }

    return result;

}


这也是我们项目里面,深度定制导航栏以后的结果,导致不能使用系统的原生的一种滑动返回的效果以后,一种不减少体验效果的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值