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 当前控制器为根控制器 2 如果这个push  pop 动画正在执行(私有属性)
    
    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];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容