iOS UIGestureRecognizer shouldReceiveTouch - panGesture的速度为0

时间:2017-06-09 17:24:42

标签: ios objective-c

我想知道平移手势的速度,以确定手势是向下滑动还是向上滑动。如果滑动是向下的,则视图不应该接收触摸并且通过hitTest将触摸返回到其超视图,hitTest将处理触摸事件,如果触摸向上,则当前视图应该处理触摸事件。但是,我无法在当前视图(子视图)内的shouldReceiveTouch方法内获得触摸的速度。

是否因为在调用gestureRcognizerShouldBegin方法之前实际上不会处理触摸?

如果我的想法不起作用,还有其他方法可以实现我想要的吗?

1 个答案:

答案 0 :(得分:0)

我认为this可能会帮助您实际需要的东西。您需要做的是使用目标函数并使用 Y 值来获取方向。

我刚刚分享了该主题如何帮助我们。你可以试试。

- (void)pan:(UIPanGestureRecognizer *)recognizer 
{
if ((recognizer.state == UIGestureRecognizerStateChanged) ||
    (recognizer.state == UIGestureRecognizerStateEnded))
{
    CGPoint velocity = [recognizer velocityInView:self.view];

    if (velocity.y >0)   // panning down
    {
      //Do your thing
    }
    else                // panning up
    {
      //Do your thing
    }
}
}