iOS 視圖 push 時,UI卡死問題

起因:

之前一直沒有遇到類似問題,最近遇到項目UI視圖經(jīng)??ㄋ垃F(xiàn)象,一直沒找到必現(xiàn)條件,后面發(fā)現(xiàn)在rootViewController頁面觸發(fā)側滑返回pop操作,再push就會卡死,定位到是側滑手勢導致的。

分析:

因為我們的navigationController是自定義的,所以系統(tǒng)的側滑返回手勢會被禁掉,項目需要我們執(zhí)行以下代碼,把側滑手勢打開

@implementation DDNavigationController
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
   __weak typeof(self) weakself = self;
    if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.interactivePopGestureRecognizer.delegate = (id)weakself;
    }
}
@end

此時,如果我們在rootViewController里面執(zhí)行側滑手勢,相當于執(zhí)行了一個pop操作(只是我們沒有看到效果),然后接著再去執(zhí)行push,自然就push不到下一級頁面了。

解決方法:

判斷當前頁面是不是根視圖,如果是就禁止掉側滑返回手勢,如果不是就打開,代碼如下(在DDNavigationController中實現(xiàn)):

#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    if (gestureRecognizer == self.interactivePopGestureRecognizer) {
        // 屏蔽調(diào)用rootViewController的滑動返回手勢
        if (self.viewControllers.count < 2 || self.visibleViewController == [self.viewControllers objectAtIndex:0]) {
            return NO;
        }
    }
    return YES;
}

。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容