您的位置:首页 > 移动开发 > IOS开发

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IOS
相关文章推荐