我有一个位于动画循环中的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) {

    }];
}

最佳答案

这可能是因为在动画制作过程中默认情况下禁用了用户集成。

参见animateWithDuration:delay:options:animations:completion:文档:

在动画过程中,将暂时禁用用户交互以激 Activity 画视图。 (在iOS 5之前,整个应用程序都禁止用户交互。)如果希望用户能够与视图交互,请在options参数中包括UIViewAnimationOptionAllowUserInteraction常量。

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html 1

您可以将UIViewAnimationOptionAllowUserInteraction添加到方法“beeBobbing”中传递给选项的值。

关于iphone - 检测是否已移动UIImageView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10583722/

10-09 00:06