iOS7 NavigationController 手势问题 interactivePopGestureRecognizer
2015-10-20 15:38
344 查看
在iOS7中,如果使用了UINavigationController,那么系统自带的附加了一个从屏幕左边缘开始滑动可以实现pop的手势。但是,如果自定义了navigationItem的leftBarButtonItem,那么这个手势就会失效。解决方法有很多种
1.重新设置手势的delegate
2.当然你也可以自己响应这个手势的事件
我使用了第一种方案,继承UINavigationController写了一个子类,直接设置delegate到self。最初的版本我是让这个gesture始终可以begin
但是出现很多问题,比如说在rootViewController的时候这个手势也可以响应,导致整个程序页面不响应;如果在push的同时我触发这个手势,那么会导致navigationBar错乱,甚至crash;push了多层后,快速的触发两次手势,也会错乱。尝试了种种方案后我的解决方案是加个判断,代码如下,这次运行良好了。
正当窃喜的时候,发现了另一个更高端的解决方案,就是参考2。使用backBarButtonItem
不过这种方案的缺点是如果你要设置 leftBarButtonItems 来更多的自定义左边的 items时,手势又会失效(或者有其他方案我还不知道*—*)。所以最后我又选择了自己的方法。
参考1 http://www.taofengping.com/2013/12/26/ios7_barbuttonitem_navigation_gesture/#.UtZ48WSSzGz
参考2 http://blog.movieos.org/post/63401593182/custom-uinavigationcontroller-back-buttons-under-ios7
1.重新设置手势的delegate
我使用了第一种方案,继承UINavigationController写了一个子类,直接设置delegate到self。最初的版本我是让这个gesture始终可以begin
但是出现很多问题,比如说在rootViewController的时候这个手势也可以响应,导致整个程序页面不响应;如果在push的同时我触发这个手势,那么会导致navigationBar错乱,甚至crash;push了多层后,快速的触发两次手势,也会错乱。尝试了种种方案后我的解决方案是加个判断,代码如下,这次运行良好了。
正当窃喜的时候,发现了另一个更高端的解决方案,就是参考2。使用backBarButtonItem
不过这种方案的缺点是如果你要设置 leftBarButtonItems 来更多的自定义左边的 items时,手势又会失效(或者有其他方案我还不知道*—*)。所以最后我又选择了自己的方法。
参考1 http://www.taofengping.com/2013/12/26/ios7_barbuttonitem_navigation_gesture/#.UtZ48WSSzGz
参考2 http://blog.movieos.org/post/63401593182/custom-uinavigationcontroller-back-buttons-under-ios7
相关文章推荐
- [转][iOS Crash文件分析]-如何使用symbolicatecrash工具
- IOS 不同场景/页面下数据传递方法
- iOS的管理机制
- 在ios下保存数据到plist
- ios 文件上传, post数据
- IOS读取项目中文件
- [转] ios打包IPA的各种问题和解决方法
- IOS-照相,相片选取
- ios 获取当前时间
- NSURLConnection的几种请求方式
- IOS 字体大全
- iOS使用系统API扫描二维码条形码&限制扫描区域
- iOS: SegmentControl 实现页面切换的四种方法
- iOS使用zbar以及AVFoundation实现二维码扫描
- IOS基本数据类型之枚举
- iOS--崩溃日志分析
- iOS之用NSTimer定时刷新按钮的文字,避免按钮闪烁的办法
- ios修改textField的placeholder的字体颜色、大小
- ios学习-oc类目
- iOS 8 使用CoreLocation定位配置