检测物体上的手指

问题描述:

我想要一个图像,当用户触摸它时,它会摆动,一旦用户抬起手指,它就会停下来。检测物体上的手指

是否有手势可以用来检测手指何时下垂,而不仅仅是在初始触摸时,或者当用户在手指上移动时?

我已经尝试了LongPress手势,但是手指在视图上的整个时间都没有被调用。任何人都可以帮助我以最好的方式来激活这个。现在我正在使用touchesBegin,touchesMoved,touchesEnd来做它,但我想知道是否有更好的方法。

任何建议,非常感谢。

感谢

+0

触摸下也许? – 2012-04-13 16:43:42

答案很简单 - 你可以使图像的UIButton,并开始触地摆动,并停止它TouchUpInside或TouchUpOutside

苹果Touches sample包括同时使用UIResponder和UIGestureRecognizer演示代码方法。

要么应该为你正在做的工作。

+0

是的,我明白,但首先,我可以在UIGestures中使用touchesBegin等吗?我在想,我只能用一个或另一个......这是真的吗?其次,我希望我的动画在手指落下的整个过程中发生,最有可能是没有动作,所以我该如何在手指向下时采取行动? – LilMoke 2012-04-13 16:18:51

+0

我还没有尝试过将UIGestureRecognizer与UIResponder混合使用,但是我不知道你不能使用两者的混合。这听起来像你试图触发你的动画基于一些持续的事件,而触摸正在举行?如果这是你的问题,那么我建议你在一个单独的线程上做你的动画,并发送消息来启动和停止动画。您的动画将与UIActivityIndi​​cator的使用方式类似。我没有这方面的例子,但搜索“背景动画”或类似应该指向正确的方向。 – strings42 2012-04-13 16:32:14

+0

显然,两者不会在默认情况下一起工作,请参阅http://mobworld.wordpress.com/2011/05/25/touches-cancelled-gesture/这是我的问题,如果我可以让他们一起工作我很好去。 – LilMoke 2012-04-13 17:09:49

听起来像你想子类 UIGestureRecognizer,我记得,它获得touchesBegan:...和相关的方法。阅读UIGestureRecognizer参考中关于子类的注释。或者像SomaMan建议的那样使用UIButton。

编辑 根据该意见,我稍微误解了原来的问题,所以我编辑我的回答不同的解决方案,它希望更清楚一点(和答案的实际问题 - 而不是一个在我的头)。

长按手势是连续的(在没有点按手势的情况下)。这意味着,识别器回调将继续被调用,直到手势完成 - 直到“longpress”被释放才会发生。所以,以下应该做你想要的。注意:我认为您要在识别长按时“开始晃动”视图,然后在释放手指时“停止晃动”视图。我只是假装你有这个功能。适当替代。

- (void)handleLongPress:(UILongPressGestureRecognizer*)gestureRecognizer 
{ 
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 
     StartShakingView(gestureRecognizer.view); 
    } else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) { 
     StopShakingView(gestureRecognizer.view); 
    } 
} 
+0

但您使用哪种UIGestureRecognizer? – samson 2012-04-15 11:58:53

+0

你是什么意思'手势点燃时完成抖动'? – LilMoke 2012-04-16 18:32:04

+0

@ samson,@ LilMoke 请参阅编辑答案。 – 2012-04-16 22:01:45