UIScrollView滑动与轻扫手势冲突

来源:互联网 发布:linux 命令源码 编辑:程序博客网 时间:2024/04/29 20:34

遵循UIGestureRecognizerDelegate协议

 UIView *view = [[UIView alloc]initWithFrame:CGRectMake(sWidth * (_imagesArr.count - 1), 1, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];    UISwipeGestureRecognizer *swip = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(enterApp:)];    [view addGestureRecognizer:swip];    view.userInteractionEnabled = YES;    _scrollView.userInteractionEnabled = YES;    view.backgroundColor = [UIColor clearColor];//    [btn addTarget:self action:@selector(enterApp:) forControlEvents:UIControlEventTouchUpInside];    swip.direction = UISwipeGestureRecognizerDirectionLeft;    swip.delegate = self;//    swip.direction = UISwipeGestureRecognizerDirectionUp;    [_scrollView addSubview:view];

添加手势的代理方法

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{    // 首先判断otherGestureRecognizer是不是系统pop手势    if ([otherGestureRecognizer.view isKindOfClass:NSClassFromString(@"UILayoutContainerView")]) {        // 再判断系统手势的state是began还是fail,同时判断scrollView的位置是不是正好在最左边        if (otherGestureRecognizer.state == UIGestureRecognizerStateBegan && _scrollView.contentOffset.x == sWidth*3) {            return NO;        }    }    return YES;}
阅读全文
0 0