文档章节

iOS 使用系统自带的右滑返回上一个界面

最牛逼的代码搬运工
 最牛逼的代码搬运工
发布于 2016/09/23 15:26
字数 347
阅读 101
收藏 0

最近在自己的项目里面添加iOS右滑返回上一个界面。具体的代码如下:

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    /******添加右滑手势*******/
    self.navigationController.interactivePopGestureRecognizer.delegate = self;
}

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    if (self.navigationController.viewControllers.count<=1) {
        return NO;
    }else{
        return YES;
    }
}

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    /******处理右滑手势与scrollview手势冲突*******/
    return [gestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]];
}

在我的BaseViewController里面添加了这些代码。

注意:

1.

其中self.navigationController.interactivePopGestureRecognizer.delegate = self代理的设置必须是在ViewDidAppear里面进行设置,如果在ViewDidLoad里面进行设置的话,一级页面进入二级页面,二级页面进入三级页面。三级页面可以返回到二级页面,但是从二级页面返回到一级页面时候就会失效。自己找了原因,是因为self.navigationController.interactivePopGestureRecognizer.delegate = self这个代理没有设置上,导致gestureRecognizerShouldBegin这个方法没有执行。所以必须在ViewDidAppear里面进行设置

2.

if (self.navigationController.viewControllers.count<=1) {
        return NO;
    }else{
        return YES;
    }

这段代码是为了一级页面不让右滑,如果不作处理,会出现bug:右滑了一级页面,然后再点击进入二级页面,会发现push不了二级页面。但是按下Home键,在打开app会发现已经进入了二级页面。

3.

return [gestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]];这句话就是为了解决手势冲突而写的。

© 著作权归作者所有

最牛逼的代码搬运工
粉丝 5
博文 42
码字总数 23329
作品 0
六安
程序员
私信 提问
论坛源码推荐(4月28日):列表项目的波浪效果 兼容iOS 6与iOS 7的自定义导航条

Flow 基于手势的教程框架,以用户熟悉的手势来驱动用户界面。灵感来自于Facebook Paper。 测试环境:Xcode 5.0,iOS 4.3以上 AMWaveTransition 带有表格的视图控制器切换效果,点击每个栏目会...

mingxun
2014/04/29
0
0
React Native VS Flutter评测

React Native VS Flutter评测 编辑于 11:34

纪洪波
2018/06/27
0
0
iOS 9.3 正式推送,新增夜间模式、备忘录加密

随着今天凌晨 iPhone SE 的发布,苹果最新的操作系统 iOS 9.3 也同时发布,而且现在已经开始推送。iOS 9.3 是这一代 OS 中功能变动最大的一次更新,带来了早就该有的「夜间暖光模式」和「备忘...

oschina
2016/03/22
4.6K
9
完美结局iPhoneX自定义tabBar重影问题

对于iOS开发者来说,底部的tabBar通常都是需要自定义,因为系统自带的或多或少和我们要求的总有一点的出入。 在自定义tabBar后,通常做法就是移除系统的tabBar来防止出现重影的问题。 在iPh...

会飞的海豚哦
2018/05/24
0
0
传 iOS 7 采用扁平化设计:颠覆拟物理念

据美国科技博客9to5Mac报道,多位亲眼见过或大致了解新一代iOS 7操作系统的人士透露,这款系统将对用户界面进行重新设计,虽然可能会吸引新的iOS用户,但却有可能导致已经习惯旧界面的老用户...

oschina
2013/05/01
4.6K
15

没有更多内容

加载失败,请刷新页面

加载更多

nproc systemd on CentOS 7

Increasing nproc for processes launched by systemd on CentOS 7 Ask Question I have successfully increased the nofile and nproc value for the local users, but I couldn't find a p......

MtrS
今天
3
0
了解微信小程序下拉刷新功能

小程序提供了这个事件。 onPullDownRefresh() 监听用户下拉刷新事件。 如果要开启下拉刷新功能,要先到json配置: "enablePullDownRefresh":true 配置后下拉有反应了但是没有加载效果,在onP...

oixxan__
今天
2
0
springmvc java对象转json,上传下载(未完)拦截器Interceptor以及源码解析(未完待续)

package com.atguigu.my.controller;import java.util.Collection;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Contr......

architect刘源源
今天
29
0
[日更-2019.5.24、25、26] Android系统中的Binder通信机制分析(一)--servicemanager

声明 其实对于Android系统Binder通信的机制早就有分析的想法,记得去年6、7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾... 最近,刚好在做...

Captain_小馬佩德罗
昨天
24
0
聊聊dubbo的DataStore

序 本文主要研究一下dubbo的DataStore DataStore dubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/store/DataStore.java @SPI("simple")public interface DataStore { ......

go4it
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部