我有一个动态循环中的UIImageView
。我想检测是否已触摸并打印出NSLog
的消息。想法是在触摸时执行另一个动画,但是目前我无法检测到它是否被触摸过。用户交互已启用。这是代码:
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
UIView *touchedView = [touch view];
if (touchedView == imgSun) {
NSLog(@"Sun touched");
[self spinSun];
} else if (touchedView == imgBee) {
NSLog(@"Bee touched");
} else if (touchedView == imgClouds) {
NSLog(@"Clouds touched");
}
}
动画方法:
-(void) beeBobbing
{
[UIView animateWithDuration:1.0f delay:0 options:(UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat) animations:^{
CGPoint bottomPoint = CGPointMake(215.0, 380.0);
imgBee.center = bottomPoint;
} completion:^(BOOL finished) {
}];
}
答案 0 :(得分:2)
这可能是因为在动画期间默认禁用了用户集成。
请参阅animateWithDuration:delay:options:animations:completion:documentation:
在动画期间,对正在设置动画的视图暂时禁用用户交互。 (在iOS 5之前,对整个应用程序禁用用户交互。)如果希望用户能够与视图交互,请在options参数中包含UIViewAnimationOptionAllowUserInteraction常量。
http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html 1
您可以将UIViewAnimationOptionAllowUserInteraction添加到传递给方法'beeBobbing'中的选项的值。