iOS自带返回手势在rootVC上右滑两次导致页面无法跳转
2017-06-06 16:14
489 查看
前一段时间被提了个特别奇怪的bug:一个特别简单的设置页面,操作几下之后无法跳转到下一个页面,然而我们这边几个开发都无法重现出来,后台也抓不到任何crash报告。只能去测试那边看怎么复现,测试那边也是不是次次都能重现出来,后来发现这个测试有个习惯,喜欢在页面上随意的左滑右滑,顺着这个思路,果然重现了这个问题。
“页面无法跳转,肯定是主线程被阻塞了啊”,顺着这个思路,我监控了一下线程,发现一切正常,并没有被阻塞。
正当百思不得其解的时候,往左边滑动了一下,发现那个新的VC被拖了出来,貌似是NV发生了错乱。用debug view hierarchy看到有页面确实跳转过来了,但是不知道为什么手机上没有显示出来,仍然卡死在第一个页面。如下图的情况:
那应该就是在重写右滑手势的协议的时候有问题了,因为项目中遇到有些UI会误触发右滑手势,所以屏蔽了一些不触发右滑返回的情况。然而现实是悲催的,就算全部屏蔽了我们自己的代码,还是会出现这个问题,这时候问题就比较清晰了,直接在协议里面判断一下当前vc是不是rootvc,如果是直接返回NO,不响应手势.(注:后期测试,如果自己不重写协议不会出现这样的问题。)
最后上代码
self.interactivePopGestureRecognizer.delegate = self;
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
//判断如果是当前VC是rootVC,直接不响应手势
if (self.viewControllers.count == 1 ) {
return NO;
}
return YES;
}
“页面无法跳转,肯定是主线程被阻塞了啊”,顺着这个思路,我监控了一下线程,发现一切正常,并没有被阻塞。
正当百思不得其解的时候,往左边滑动了一下,发现那个新的VC被拖了出来,貌似是NV发生了错乱。用debug view hierarchy看到有页面确实跳转过来了,但是不知道为什么手机上没有显示出来,仍然卡死在第一个页面。如下图的情况:
那应该就是在重写右滑手势的协议的时候有问题了,因为项目中遇到有些UI会误触发右滑手势,所以屏蔽了一些不触发右滑返回的情况。然而现实是悲催的,就算全部屏蔽了我们自己的代码,还是会出现这个问题,这时候问题就比较清晰了,直接在协议里面判断一下当前vc是不是rootvc,如果是直接返回NO,不响应手势.(注:后期测试,如果自己不重写协议不会出现这样的问题。)
最后上代码
self.interactivePopGestureRecognizer.delegate = self;
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
//判断如果是当前VC是rootVC,直接不响应手势
if (self.viewControllers.count == 1 ) {
return NO;
}
return YES;
}
相关文章推荐
- iOS 页面跳转后去掉返回按钮和返回手势
- iOS开发 高德地图 解决点击大头针跳转页面 返回无法点击的问题
- 关于ionic中ios系统无法去掉<ion-nav-back-button>返回键自带的返回back字
- [IIS] 测试的产品登陆之后有个引用外部站点js的请求半天都无法返回,导致网页一直在打转,Selenium的driver也无法对页面进行下一步的操作
- 登录页面在输入了正确的用户名和密码后仍跳转到登录页面而不是期望的系统首页面,debug的时候发现,登录页面调用的action类方法被调用了两次,后台无法获取前台页面传过来的参数。
- iOS开发 指定页面关闭右滑手势返回功能
- ios开发之--两次模态弹出后,怎么返回最上层的页面
- IOS - 页面跳转及返回 (push-pop,modal-dismiss)
- iOS 直接页面跳转与返回
- iOS开发实现页面的跳转与返回
- iOS 调起微信支付页面后,点击取消或支付成功无法返回原APP问题
- IOS 框架页面跳转、Appdelegate.m控制返回rootVC
- android webview 因iframe+target=“_blank “ 导致的页面无法正常打开或获取不到跳转url
- iOS跳转到指定页面,而不是简单的返回上一个页面
- ###(很难找的页面错误)查询操作不需要 返回 操作成功后失败。【方法不能同时执行两个response返回两次数据。导致页面显示数据失败】
- 关于跳转到空白页面进行新浪微博分享,当点击取消保存到草稿时无法监听,返回空白页问题的解决方案
- iOS系统自带右滑手势返回上一级界面
- iOS_支付宝网页支付页面无法跳转(未安装支付宝的情况下)
- iOS 调起微信支付页面后,点击取消或支付成功无法返回原APP问题
- IOS微信中看文章跳转页面后点击返回无效