今天看了看自己以前做的项目,发现和其他应用在界面返回的地方不太一样,就是不支持侧滑。通过上网及自己思考完美解决。
要支持侧滑,需要我们自定义UINavigationConroller
贴下代码:
@interface JFNavigationController ()<UIGestureRecognizerDelegate, UINavigationControllerDelegate>
@end
@implementation JFNavigationController
- (void)viewDidLoad {
[super viewDidLoad];
__weak JFNavigationController *weakSelf = self;
if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)])
{
self.interactivePopGestureRecognizer.delegate = weakSelf;
self.delegate = weakSelf;
}
}
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ( [self respondsToSelector:@selector(interactivePopGestureRecognizer)])
{
self.interactivePopGestureRecognizer.enabled = NO;
}
[super pushViewController:viewController animated:animated];
}
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
{
if ( [self respondsToSelector:@selector(interactivePopGestureRecognizer)])
{
self.interactivePopGestureRecognizer.enabled = NO;
}
return [super popToRootViewControllerAnimated:animated];
}
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated { if( [self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.interactivePopGestureRecognizer.enabled = NO;
}
return [super popToViewController:viewController animated:animated];
}
#pragma mark UINavigationControllerDelegate
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animate {
if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.interactivePopGestureRecognizer.enabled = YES;
}
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
if ( gestureRecognizer == self.interactivePopGestureRecognizer ) {
if ( self.viewControllers.count < 2 || self.visibleViewController == [self.viewControllers objectAtIndex:0] ) {
return NO;
}
}
return YES;
}
@end
这样就可以解决手势返回的问题,且不会出现返回卡住UI的bug。
附上Demo地址:
https://github.com/jifengchao/UINavigationController-
借鉴文章:
http://blog.csdn.net/chenyong05314/article/details/44829127