iOS7.0
之后所有的页面默认开启侧滑返回上一页面,使页面返回变得更加快捷。- 每个
UINavigationController
都有一个RootViewController
,在其他的页面进行侧滑没什么问题,因为有RootViewController
的存在,但是在RootViewController
页面,进行侧滑将无上一级页面返回,就会造成屏幕卡死的问题。 - 解决方式:在进入一级页面时将侧滑关闭、在离开页面时将侧滑打开。
- 代码如下:
@interface ServeHomeViewController ()
@property (nonatomic,assign) BOOL isCanSideBack;
@end
@implementation ServeHomeViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self disableSideBack];
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self enableSideBack];
}
- (void)disableSideBack{
self.isCanSideBack = NO;
if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
}
}
- (void)enableSideBack{
self.isCanSideBack = YES;
if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
}
}
#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer {
return self.isCanSideBack;
}