iOS7开始是自带界面右滑回退功能的,但是有的时候如果需要自定义那个回退按键,就会去覆盖leftBarButtonItem,而此时iOS自带的右滑回退功能就失效了,此时如果想继续使用这个右滑回退功能,可以在tabBarController的navigationController中加入以下代码:
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
}
去掉代理后,由navigationController去push的后续界面都可以右滑回退了,但是如果在navigationController页进行右滑的话就会导致界面卡死,此时可以手动加上左边界的右滑事件:
//首页从左滑动做右滑回退会有导致界面卡死 这里定义掉左边的右滑事件加以消除卡死现象
UIScreenEdgePanGestureRecognizer *leftEdgeGesture = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(handleLeftEdgeGesture:)];
leftEdgeGesture.edges = UIRectEdgeLeft;
[self.view addGestureRecognizer:leftEdgeGesture];
然后实现事件函数,不做任何操作即可:
- (void)handleLeftEdgeGesture:(UIScreenEdgePanGestureRecognizer *)gesture {
//do nothing
}
这样就可以避免卡死现象 ,后续的viewController也能够拥有右滑回退功能。
还有一个想法还没尝试,就是重写UIViewController,给它手动加上右滑回退功能,然后让需要右滑回退的viewController去继承它。