美文网首页
iOS触摸事件传递和手势的关系

iOS触摸事件传递和手势的关系

作者: yohen | 来源:发表于2017-03-15 15:40 被阅读428次

    今天尝试给UITableViewCell增加自定义左滑手势,发现ContentView的frame是无法修改的,只能在上面增加一层MyContentView,并加上一个pan手势,当往左开始移动的时候,然后在MyContentView下插入一个UIButton。然后效果出来了,但是,但是发现UITableView上下方向无法滑动了。

    看来是添加在MyContentView的手势和UITableView自带的手势冲突了

    看了下代理方法,应该是UITableView的手势被阻止了,可以通过下面的方法return YES来启用。

    - (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer*)otherGestureRecognizer;

    现在好了,现在可以上下滑动和左拉滑动了,但是手势会同时响应,这个太bug了,看到网上的做法,可以通过获得手势在某一个方向上的速度来判定:

    -(BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer{

    if([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]){

    CGPoint velocityPoint =[gestureRecognizer velocityInView:self.contentView];

    if(fabs(velocityPoint.x)> 100){

    return YES;

    }else

    return NO;

    }else

    return NO;

    }

    顺便回顾了iOS的事件传递和 总结下,手势具有优先权。给某个视图加上手势,当有触摸事件发生的时候,视图的touchBegan还是会执行的,如果触摸过程被捕获为手势事件,就不会回到touchMove等方法了,假如不能被识别为手势事件,就跟往常一样会进行各种touch方法的回调。

    相关文章

      网友评论

          本文标题:iOS触摸事件传递和手势的关系

          本文链接:https://www.haomeiwen.com/subject/nwvlnttx.html