iOS7滑动返回
来源:互联网 发布:微网页制作软件 编辑:程序博客网 时间:2024/04/30 02:21
iOS 7中在传统的左上角返回键之外,提供了右滑返回上一级界面的手势。支持此手势的是UINavigationController中新增的属性interactivePopGestureRecognizer,即右滑返回只支持以UINavigationController为容器的ViewController间切换,要想在自定义容器中使用,需要一些额外的工作。
基本地,控制ViewController是否启用右滑返回,只需要这样:
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
默认情况下enabled为YES。
在实际使用中,遇到了一些问题,整理如下:
1、自定义返回按钮后,右滑返回失效;
解决方案:比较直观的办法是在自定义返回按钮时,使用backBarButtonItem:
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];self.navigationItem.leftBarButtonItem = barItem; //not workingself.navigationItem.backBarButtonItem = barItem; //serve well
但这样无法支持左上角多个按钮的情况。考虑到 interactivePopGestureRecognizer也有delegate属性, 替换默认的 self . navigationController .interactivePopGestureRecognizer.delegate来配置右滑返回的表现也是可行的。在主ViewController中:
self.navigationController.interactivePopGestureRecognizer.delegate = self;
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ if (self.navigationController.viewControllers.count == 1)//关闭主界面的右滑返回 { return NO; } else { return YES; } }
如此做的好处是可以在主ViewController中配置栈中所有ViewController右滑返回的开启,而不需要在各个ViewController中分别设置enabled。
值得注意的是:在替换了delegate之后,必须在gestureRecognizerShouldBegin:中设置某ViewController A开启右滑返回,同时在A中未设置interactivePopGestureRecognizer.enabled = NO,右滑返回才会开启,即二者中任一为NO,右滑返回都处于关闭状态。
2、主界面(UINavigationController栈中的第一个ViewController)默认也是开启右滑返回的。若在主界面上右滑,不会有动作执行。但此时想进入下一级ViewController(如点击tableView中某一行),切换动画却没有出现。切回桌面再进入应用,发现直接进入了下一级ViewController。
解决方案:这个问题是在最初试验右滑返回的使用方式时出现的。在使用自定义返回按钮的ViewController中
self.navigationController.interactivePopGestureRecognizer.delegate = self;
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回总结
- ios7+滑动返回
- iOS7滑动返回
- ios7 滑动返回
- iOS7滑动返回
- hdu 5078 Osu! (2014 acm 亚洲区域赛鞍山 I)
- 点击edittext以外的地方关闭软键盘的方法
- 第9周项目4乘法口诀表
- 判断链表中是否有环路,以及求环路的入口点
- 性能服务器开发
- iOS7滑动返回
- [IDE] VS文件扩展名大全
- SPOJ第三题(回文数问题)
- SQL Server Profiler使用方法
- R:语言介绍
- Logon database Tiger引起DataGuard不同步问题
- 购物车功能模块设计
- 第九周项目6-穷举法之百钱百鸡
- 按HOME键关闭再打开时重启程序