本人項目中出現偶發性的從A頁面跳轉B頁面卡死問題。並不是crash,斷點顯示跳轉代碼已經運行,只是界面卡主,返回主界面再返回程序,跳轉完成。
分析發生原因
1、界面某控件內存未釋放,導致的內存的溢出(可能性不大,ARC且界面並不復雜)
2、手勢沖突(可能性較大)
3、是否跟Tabbar和Navigation有關
解決方案
經過上網查找方案,以及自己分析代碼。最終判斷是手勢沖突問題(此情況主要發生在一級頁面與二級頁面之間且基VC右劃返回手勢也可以響應,因為沒有上一級頁面,導致整個程序頁面不響應)
向一級頁面添加如下代碼即可:
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self forbiddenSideBack];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[self resetSideBack];
}
#pragma mark -- 禁用邊緣返回
-(void)forbiddenSideBack{
self.isCanBack = NO;
//關閉ios右滑返回
if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.delegate=self;
}
}
#pragma mark --恢復邊緣返回
- (void)resetSideBack {
self.isCanBack=YES;
//開啟ios右滑返回
if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
}
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer {
return self.isCanBack;
}