先看问题:
在侧滑根控制器之后App出现了假死现象(在当前页面无法进行任何操作),这是因为我们在点击红色按钮的时候已经进行了页面的跳转但App显示给我们的还是当前页面。
解决问题:
我们只需要在跟控制器中禁止侧滑即可。
代码:
self.interactivePopGestureRecognizer.delegate = self; // 为什么加上这行代码就会出现App假死呢
if (navigationController.childViewControllers.count == 1) { // 防止屏幕假死
self.interactivePopGestureRecognizer.enabled = NO;
}else{
self.interactivePopGestureRecognizer.enabled = self.interactivePopGestureRecognizerEnable;
}
如果使用全屏侧滑同样会出现这个问题,解决问题的方法是相同的,即在根控制器中禁止侧滑。
代码:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
if (self.childViewControllers.count == 1) { // 防止屏幕假死
return NO;
}else{
return YES;
}
}
下面是一个小demo,demo中有添加全屏侧滑的方法以及在某个页面中禁用侧滑的方法。
demo地址: ***https://gitee.com/liangsenliangsen/sideslip.git
注意:
- 禁用某个页面的侧滑手势,需要注意禁用和开启的时机,如果时机不对,会造成页面假死。
- 导航栏的返回按钮如果是自定义的,系统的侧滑返回会自动失效。
****本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。??***