本人項目中出現偶發性的從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; }