当我想为UI
ImageView设置动画时,添加到它的UITapGestureRecognizer无法工作.为什么???
-(void) testTap:(id)sender { NSLog(@"Test tap..."); } -(void) testSlide { UITapGestureRecognizer* testTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(testTap:)] autorelease]; testTap.numberOfTapsrequired = 2; UIImageView* imageView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tip_slide"]] autorelease]; [imageView setFrame:CGRectMake(40,40,200,200)]; imageView.userInteractionEnabled = YES; imageView.multipleTouchEnabled = YES; [imageView addGestureRecognizer:testTap]; [self.view addSubview:imageView]; // When I add the following code,the UITapGestureRecognizer will not work. WHY??? imageView.alpha = 0; CGAffineTransform t = imageView.transform; if (CGAffineTransformIsIdentity(t)) { UIViewAnimationOptions options = UIViewAnimationCurveEaseInOut; [UIView animateWithDuration:1.0 delay:0 options:options animations:^{ imageView.alpha = 1.0; } completion:^(BOOL finished) { if (finished) { [UIView animateWithDuration:1.0 delay:2.0 options:options animations:^{ imageView.alpha = 0.4; } completion:^(BOOL finished) { if (finished) { [imageView removeFromSuperview]; } }]; } }]; } }
解决方法
您需要在动画期间允许用户交互.
UIViewAnimationOptions options = UIViewAnimationCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction;