我试图有一个图像,当用户触摸它时,它会摆动,一旦用户抬起手指,它就会停止。
是否有一个手势可以用来检测手指何时向下,而不仅仅是在初始触摸时,或者当用户在那里移动手指时?
我已经尝试过 LongPress 手势,但是在手指在视图上的整个过程中都不会调用它。任何人都可以帮助我以最好的方式来激活它。现在我正在使用 touchesBegin、touchesMoved、touchesEnd 进行操作,但我想知道是否有更好的方法。
非常感谢任何建议。
谢谢
我试图有一个图像,当用户触摸它时,它会摆动,一旦用户抬起手指,它就会停止。
是否有一个手势可以用来检测手指何时向下,而不仅仅是在初始触摸时,或者当用户在那里移动手指时?
我已经尝试过 LongPress 手势,但是在手指在视图上的整个过程中都不会调用它。任何人都可以帮助我以最好的方式来激活它。现在我正在使用 touchesBegin、touchesMoved、touchesEnd 进行操作,但我想知道是否有更好的方法。
非常感谢任何建议。
谢谢
编辑 根据评论,我稍微误解了原始问题,所以我编辑了我对不同解决方案的答案,希望它更清楚(并回答实际问题 - 而不是我脑海中的那个)。
LongPress 手势是连续的(点击手势不是)。这意味着,识别器回调将继续被调用,直到手势完成 - 这在“长按”释放之前不会发生。所以,以下应该做你想要的。注意:我认为您想在识别出长按时“开始摇动”视图,然后在松开手指时“停止摇动”视图。我只是假装你有这个功能。适当替换。
- (void)handleLongPress:(UILongPressGestureRecognizer*)gestureRecognizer
{
if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
StartShakingView(gestureRecognizer.view);
} else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
StopShakingView(gestureRecognizer.view);
}
}
Apple Touches 示例包含演示如何使用 UIResponder 和 UIGestureRecognizer 方法的代码。
任何一个都应该适用于你正在做的事情。
听起来你想继承UIGestureRecognizer,我记得它获取touchesBegan:...
和关联的方法。阅读 UIGestureRecognizer 参考中关于子类化的注释。或者按照 SomaMan 的建议使用 UIButton。
简单的答案 - 您可以将图像设为 UIButton,然后在 TouchDown 上开始摆动,然后在 TouchUpInside 或 TouchUpOutside 上停止