滑动返回上一层级
2015-06-16 09:59
239 查看
为了实现自己的设计风格,体现自己的特色,大部分公司都会采用完全定制导航栏以及导航栏上面的控件,这样除了容易控制也能更方便、更随意。那其实自定义导航栏是一把双刃剑,满足自己需求以外,你可能还会丢失一些东西,比如说,手势拖动返回上一层级,可能就会失效了,那么,又想自定义控件,还想实现拖动返回的效果,那该怎么做呢:首先,要知道,iOS 7除了在传统的左上角添加返回键之外,还提供了右滑返回上一级界面的手势。他是UINavigationController新增的一个属性,因为所谓的拖动返回上一层级,其实就是进出栈。他是由导航控制器来实现的。而UINavigationController的这个属性就是interactivePopGestureRecognizer,即右滑返回只支持以UINavigationController为容器的ViewController间切换,要想在自定义容器中使用,还需要一些额外的工作。1、一般的如果想控制ViewController是否启用右滑返回,只需要这样:不过此属性,默认就是YESself.navigationController.interactivePopGestureRecognizer.enabled= YES;2、如果你是自定义了返回按钮,那么拖动返回效果就是失效,那么可以这么做:在viewWillAppear中添加如下代码:self.navigationController.interactivePopGestureRecognizer.delegate= self;此时即可实现拖动返回的效果3、但是此时你会发现一个问题:就是你在首页(跟视图)拖动返回的时候,你会发现,他并没有什么反应,此时,你再点击进入下一层级的话,会出现他并没有进入下一个界面,如果你此时进入后台,然后再重新进入前台的话,会发现他已经进入下一层级,其实,当你在首页拖动返回上一层级的时候,因为他是栈中的第一个,已经没有上一层级,所以在首页(跟视图)的时候,你需要禁用interactivePopGestureRecognizer的这个属性,设置成NO即可那么你可以这么做:-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{if (self.navigationController.viewControllers.count ==1)//关闭主界面的右滑返回{return NO;}else {return YES;}}这样,就不会出现上述问题了
相关文章推荐
- Android CircleMenu 圆形旋转菜单
- 浙江大学PAT_甲级_1031. Hello World for U (20)
- 再探java基础——throw与throws
- 游戏感:虚拟感觉的游戏设计师指南——第九章 润色的测量方法
- struts2中的constant配置详解
- 一例千万级pv高性能高并发网站架构
- ORACLE
- VSTO学习笔记(五)批量编辑Excel 2010 x64
- 11-2实战混合模式合成图像
- IOS设计模式之一(MVC模式,单例模式)
- 获得Properties文件的内容
- C++ - C++0x/C++11 Support in GCC
- 游戏感:虚拟感觉的游戏设计师指南——第八章 环境的测量方法
- linux设备模型 底层
- 微软100题(87)最大连续递增数字串
- 一个程序员的日常
- 发布MeteoInfo 1.2.5
- golang调用动态库
- JavaScript正则表达式之multiline属性的应用
- C#图片上传效果实例分析