当我想为UIImageView
设置动画时,添加到其中的UITapGestureRecognizer
无效。 WHY ???
-(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];
}
}];
}
}];
}
}
答案 0 :(得分:24)
您需要在动画期间允许用户互动。
UIViewAnimationOptions options = UIViewAnimationCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction;
答案 1 :(得分:3)
只是为Swift添加...这样的东西会很好用...... 使用 .AllowUserInteraction 。
UIView.animateWithDuration(0.4, delay: 1.5, usingSpringWithDamping: 0.5, initialSpringVelocity: 20, options: UIViewAnimationOptions.AllowUserInteraction, animations:
{self.frame = originalFrame}, completion: nil)