问题现象: 遇到一个诡异的问题,我的根视图是Tabbar+navigation,在点击push到另外页面的时候,页面卡住了,导航栏的标题是下个页面的,view还是当前的,然后我按home键,在进入到应用,页面又正常了。
原因是: 手势pop的问题。当处在navi的根控制器时候, 做一个侧滑pop的操作, 看起来没任何变化, 但是再次push其它控制器时候就会出现上述问题了。这种情况是会出现在我们自定义的navigation中,因为继承自UINavigation后,原先的右划手势被禁掉了,而我们经常会加上一句话打开手势
self.interactivePopGestureRecognizer.delegate = (id)self;
这时候我们如果在根视图里面执行右划手势,相当于执行了一个pop操作(只是我们没有看到效果而已)。然后接着去执行push,自然就push不到下一级页面了。
解决方法: 判断当前页面是不是根视图,如果是就禁止掉右划手势,如果不是就打开,一般我们controller都会继承自同一个BaseViewController,在里面写就行,如下:
// 判断如果是页面是navigationController中的第一个页面就禁止左划手势,不然在第一个页面执行左划手势后在push不到第二个页面
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (self.navigationController.viewControllers.firstObject == self) {
self.navigationController.interactivePopGestureRecognizer.enabled = false;
}else{
self.navigationController.interactivePopGestureRecognizer.enabled = true;
}
}
网友评论