iOS 全屏滑動手勢

遵循代理 UIGestureRecognizerDelegate

     UIGestureRecognizer *gesture = self.interactivePopGestureRecognizer;
     gesture.enabled = NO;
     UIView *gestureView = gesture.view;
     

     UIPanGestureRecognizer *popRecognizer = [[UIPanGestureRecognizer alloc] init];
     popRecognizer.delegate = self;
     popRecognizer.maximumNumberOfTouches = 1;
     [gestureView addGestureRecognizer:popRecognizer];
     
     NSMutableArray *_targets = [gesture valueForKey:@"_targets"];
     id gestureRecognizerTarget = [_targets firstObject];
     id navigationInteractiveTransition = [gestureRecognizerTarget valueForKey:@"_target"];
     SEL handelTransition = NSSelectorFromString(@"handleNavigationTransition:");
     [popRecognizer addTarget:navigationInteractiveTransition action:handelTransition];

代理方法


- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    //這里有兩個條件不允許手勢 1 當(dāng)前控制器為根控制器 2 如果這個push  pop 動畫正在執(zhí)行(私有屬性)
    
    if (self.childViewControllers.count == 1) {
        return NO;
    }
    
    //直播頁面不允許滑動返回
    UIViewController *vc = [self.childViewControllers lastObject];
    if ([vc isKindOfClass:NSClassFromString(@"ChatViewController")]) {
        return NO;
    }
    
    if ([[self valueForKey:@"_isTransitioning"] boolValue]) {
        return NO;
    }
    
    return YES;
    
    
//    return self.viewControllers.count != 1 && ![[self valueForKey:@"_isTransitioning"] boolValue];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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