2

我试图有一个图像,当用户触摸它时,它会摆动,一旦用户抬起手指,它就会停止。

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

我已经尝试过 LongPress 手势,但是在手指在视图上的整个过程中都不会调用它。任何人都可以帮助我以最好的方式来激活它。现在我正在使用 touchesBegin、touchesMoved、touchesEnd 进行操作,但我想知道是否有更好的方法。

非常感谢任何建议。

谢谢

4

4 回答 4

2

编辑 根据评论,我稍微误解了原始问题,所以我编辑了我对不同解决方案的答案,希望它更清楚(并回答实际问题 - 而不是我脑海中的那个)。

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

 - (void)handleLongPress:(UILongPressGestureRecognizer*)gestureRecognizer
{
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
        StartShakingView(gestureRecognizer.view);
    } else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
        StopShakingView(gestureRecognizer.view);
    }
}
于 2012-04-14T23:12:58.007 回答
1

Apple Touches 示例包含演示如何使用 UIResponder 和 UIGestureRecognizer 方法的代码。

任何一个都应该适用于你正在做的事情。

于 2012-04-13T16:11:44.437 回答
0

听起来你想继承UIGestureRecognizer,我记得它获取touchesBegan:...和关联的方法。阅读 UIGestureRecognizer 参考中关于子类化的注释。或者按照 SomaMan 的建议使用 UIButton。

于 2012-04-14T17:34:36.780 回答
0

简单的答案 - 您可以将图像设为 UIButton,然后在 TouchDown 上开始摆动,然后在 TouchUpInside 或 TouchUpOutside 上停止

于 2012-04-13T16:06:25.910 回答