iOS開發小貼士—APP介面跳轉卡死問題

weixin_33935777發表於2017-08-09

本人專案中出現偶發性的從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;

}

相關文章