iOS 为自定义返回按钮的页面添加右滑返回
2019独角兽企业重金招聘Python工程师标准>>>
苹果一直都在人机交互中尽力做到极致,在iOS7中,新增加了一个小小的功能,也就是这个api:self.navigationController.interactivePopGestureRecognizer.enabled = YES;
这个api功能就是在NavigationController堆栈内的UIViewController可以支持右滑手势,也就是不用点击右上角的返回按钮,轻轻在屏幕左边一滑,屏幕就会返回,随着ios设备屏幕的增大,这个小功能让手指短,拇指大和手残人士看到了福音。
这个功能是好,但是经常我们会有需求定制返回按钮,如果手动定制了返回按钮,这个功能将会失效,也就是自定义了navigationItem的leftBarButtonItem,那么这个手势就会失效。
首先让VIewController遵守
UIGestureRecognizerDelegate协议
1.重新设置手势的delegate
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
2.当然你也可以自己响应这个手势的事件
[self.navigationController.interactivePopGestureRecognizeraddTarget:selfaction:@selector(handleGesture:)];
如果只是简单定制了返回按钮,第一种最简单,一句代码搞定。
当然,在添加右滑返回的时候会遇见一个大坑,就是当退到NavigationController的rootViewController的时候继续右滑的话会遇见界面卡死的问题,解决这个问题的方法也很简单。
在rootViewController的viewDidAppear方法里面添上
self.navigationController.interactivePopGestureRecognizer.enabled = NO
在其他的ViewController的viewWillAppear方法里加上
self.navigationController.interactivePopGestureRecognizer.enabled = YES
这句话的作用是禁止使用右滑手势。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
UIGestureRecognizerDelegate
1. self.navigationController.interactivePopGestureRecognizer.enabled = YES | NO; 手势有效与否
2. self.navigationController.interactivePopGestureRecognizer.delegate = self; 手势的代理,一般会设置为self
1中的属性,再viewcontroller中默认的设置为YES,即手势有效.按照2中的属性设置后,当前的viewcontroller即可以实现该向右滑动后退功能,但是当回到navigationController的rootView中再次做出向右滑动时,程序会有问题(再次push子controller时,程序卡在当前界面无法跳转).有效解决方案如下:
说明:有两个controllerA,B
navigationController的rootview设置为A,在A中点击按钮后push B.在A的 -(void)viewDidAppear:(BOOL)animated方法中加入self.navigationController.interactivePopGestureRecognizer.enabled = NO;代码如下:
1 2 3 4 5 6 7 |
|
然后再B中的- (void)viewDidLoad方法中加入
1 2 3 4 5 6 7 8 9 10 11 12 |
|
这样即可以保证再A中向右滑动后再次pushB时不会卡在A界面.
转载于:https://my.oschina.net/u/2345393/blog/863078
iOS 为自定义返回按钮的页面添加右滑返回相关推荐
- android右滑返回动画,Android仿微信右滑返回功能的实例代码
先上效果图,如下: 先分析一下功能的主要技术点,右滑即手势判断,当滑到一直距离时才执行返回,并且手指按下的位置是在屏幕的最左边(这个也是有一定范围的), 这些可以实现onTouchEvent来实现. ...
- 【转】iOS右滑返回手势全解和最佳实施方案
序言 在ios7以后,苹果推出了手势滑动返回功能,也就是从屏幕左侧向右滑动可返回上一个界面.大大提高了APP在大屏手机和iPad上的操作体验,场景切换更加流畅.做右滑返回手势配置时,可能会遇到的 问题 ...
- IOS设置导航栏返回按钮,并添加事件返回主页面
IOS设置导航栏返回按钮,并添加事件返回主页面 前提是已经push了一个viewController了.才能使用. XXXTableViewController 里面书写 - (void)viewDi ...
- ios开发返回按钮消失_iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决...
我相信针对每一个iOS开发者来说~除了根视图控制器外~所有的界面通过导航栏push过去的界面都是可以通过右滑来返回上一个界面~其实~在很多应用和APP中~用户已经习惯了这个功能~然而~作为开发者的我们 ...
- ios7自定义返回按钮后,右滑返回功能失效解决方法
ios7自定义返回按钮后,右滑返回功能失效解决方法 -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //开 ...
- iOS 右滑返回失效问题终极解决方案
iOS 的右滑返回是必不可少的一项功能,否则用户体验会大打折扣,但是会经常会碰到某些页面右滑返回失效的情况,下面记录一下解决各种情况下右滑返回失效的方法: 1. 自定义返回按钮 如果页面上是自定义的返 ...
- iOS app 右滑返回
前提条件,存在A和B两个页面,A是主界面,A push 到 B 方法一:如果B页面的返回按钮要用自定义的按钮(在iOS7中,如果使用了UINavigationController,那么系统自带的附加了 ...
- 禁用导航栏的右滑返回实现全屏手势返回
今天发现项目中push 的也面的右滑都无法pop 查阅相关资料发现 导航栏右滑手势失效基本有两种情况 1: self.navigationController.interactivePopGestur ...
- App开发流程之右滑返回手势功能续
上一篇记录了利用系统私有变量和方法实现右滑返回手势功能:http://www.cnblogs.com/ALongWay/p/5893515.html 这篇继续记录另一种方案:利用UINavigatio ...
最新文章
- VC6.0制作OCX并web调用 .
- Win32 串口编程(四)
- IoT -- (五) IoT都有哪些通信协议
- postgresql集群方案hot standby 安装和测试
- Java中多实现接口的一个好处
- 9day条件语句和基本数据类型
- Linux之系统信息操作20170330
- Qt Embedded性能优化详解
- Spine 3.8.75 导入Unity报错
- Android实现Twitter登录分享
- excel数据导入mysql
- linux查看docker是否启动命令行,如何通过命令行查看docker服务是否已启动
- numpy数组中元素单个选取或部分选取
- leetcode java 大厂基础面试题附答案(四)
- Linux中su无法切换到目录,linux普通用户su root切换提示没有文件或目录的解决方法...
- javascript-arguments.callee的作用
- [渲染层错误] ./pages/component/form.wxml not found
- windows下ITIM admin API开发环境配置,部署至tomcat
- 基于PHP的快递查询免费开放平台案例-快宝开放平台
- ERROR: Cannot determine archive format of /tmp/pip-req-build-2uc6o_he 解决方案