本文主要是介绍iOS自带返回手势在rootVC上右滑两次导致页面无法跳转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前一段时间被提了个特别奇怪的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自带返回手势在rootVC上右滑两次导致页面无法跳转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!