一般我们如此设置手势侧滑(1.先建一个NAV的子类.然后重写Push方法)
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (self.viewControllers.count >= 1) {
viewController.hidesBottomBarWhenPushed = YES;
[super pushViewController:viewController animated:animated];
viewController.navigationController.interactivePopGestureRecognizer.enabled = YES;
} else {
[super pushViewController:viewController animated:animated];
}
}
因为count = 0的话没有上一级.这时候如果还允许侧滑就崩溃.然而如果我们自定义了导航栏的leftbarbutonitem.那么侧滑手势还是失效.
这是因为我们的viewController.navigationController.interactivePopGestureRecognizer.delegate被重置了.所以应该修改为如下代码
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (self.viewControllers.count >= 1) {
viewController.hidesBottomBarWhenPushed = YES;
[super pushViewController:viewController animated:animated];
viewController.navigationController.interactivePopGestureRecognizer.enabled = YES;
viewController.navigationController.interactivePopGestureRecognizer.delegate = nil;
} else {
[super pushViewController:viewController animated:animated];
}
}
禁用以及使用注意点:
千万不能在viewwillappear里头设置.因为在viewwillappear里头设置的话侧滑返回可能会卡死.
正确姿势是关闭在viewdidappear里头做.
最后,建议大家所有的UIViewController的View都设置一个背景色,一般都设置为[UIColor whiteColor];