您的位置:首页 > 移动开发 > IOS开发

iOS_解决首页(RootViewController)卡死BUG

2017-09-27 17:24 417 查看
iOS7.0
之后所有的页面默认开启侧滑返回上一页面,使页面返回变得更加快捷。

每个
UINavigationController
都有一个
RootViewController
,在其他的页面进行侧滑没什么问题,因为有
RootViewController
的存在,但是在
RootViewController
页面,进行侧滑将无上一级页面返回,就会造成屏幕卡死的问题。

解决方式:在进入一级页面时将侧滑关闭、在离开页面时将侧滑打开。

代码如下:

@interface ServeHomeViewController ()

@property (nonatomic,assign) BOOL isCanSideBack;/**< 是否可以侧滑 */

@end

@implementation ServeHomeViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self disableSideBack];
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self enableSideBack];
}
/*!
@abstract 禁用侧滑返回
*/
- (void)disableSideBack{
self.isCanSideBack = NO;
// 关闭 侧滑返回
if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
}
}
/*!
@abstract 启用 侧滑返回
*/
- (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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios
相关文章推荐