我有一个简单的 UILabel,当你长按它时它会开始旋转。我使用以下代码成功实现了这一点:
-(IBAction)longPressEffect:(UILongPressGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateBegan) {
UIViewAnimationOptions animationOptions = UIViewAnimationCurveLinear | UIViewAnimationOptionRepeat;
[UIView animateWithDuration:0.4 delay:0.0 options:animationOptions animations:^ {
labelObject.transform = CGAffineTransformMakeRotation(DegreesToRadians(angle));
} completion:nil];
angle = angle + 180;
}
else if (sender.state == UIGestureRecognizerStateEnded) {
;
}
}
用户只需双击标签即可随时停止此动画。这是代码:
-(IBAction)doubleTapEffect:(UITapGestureRecognizer *)sender {
[labelObject.layer removeAllAnimations];
labelObject.transform = CGAffineTransformMakeRotation(DegreesToRadians(0));
}
问题是下次您长按标签时 - 它没有响应。旋转动画不会再次启动。你必须再点击一次才能让它再次运行。
所以模式是:
1)长按 - 动画开始
2)双击 - 动画停止
3)长按 -没有任何反应
4)再次长按 - 动画再次开始。
我该如何解决?