动画移动 UIButton 在移动时不响应触摸/点击
Posted
技术标签:
【中文标题】动画移动 UIButton 在移动时不响应触摸/点击【英文标题】:Animated moving UIButton not responding to touches/taps while moving 【发布时间】:2010-08-23 12:28:17 【问题描述】:我正在尝试为 UIButton 设置动画以向上移动屏幕。用户可以随时触摸它。但是,它似乎在移动时不会响应触摸,仅在其动画的开始和结束时响应。我想这是因为按钮本身没有移动,只是它的图像。有什么想法可以解决这个问题吗?到目前为止,这是我的代码。谢谢!
- (void)viewDidLoad
[self newBubble];
[super viewDidLoad];
- (void)newBubble
UIButton *bubble = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
bubble.frame = CGRectMake(10, 380, 50, 50);
UIImage *bubbleImage = [UIImage imageNamed:@"bubble.png"];
[bubble setBackgroundImage:bubbleImage forState:UIControlStateNormal];
bubble.imageView.contentMode = UIViewContentModeScaleAspectFit;
[bubble addTarget:self action:@selector(bubbleBurst:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:bubble];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:5.0];
CGAffineTransform newTransform = CGAffineTransformMakeScale(1.5, 1.5);
bubble.transform = CGAffineTransformTranslate(newTransform, 10, -200);
[UIView commitAnimations];
- (IBAction)bubbleBurst:(id)sender
NSLog(@"Bubble burst");
UIButton *bubbleBurst = sender;
[bubbleBurst removeFromSuperview];
【问题讨论】:
【参考方案1】:+[UIView animateWithDuration:delay:options:animations:completion:]
方法采用 UIViewAnimationOptions
参数。如果你包含UIViewAnimationOptionAllowUserInteraction
,你应该能够在它动画时按下按钮:
[UIView animateWithDuration:5.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^
CGAffineTransform newTransform = CGAffineTransformMakeScale(1.5, 1.5);
bubble.transform = CGAffineTransformTranslate(newTransform, 10, -200);
completion:nil];
【讨论】:
【参考方案2】:好吧,在发布了类似的问题后,我找到了answer here
基本上,您必须使用 NSTimer 逐帧移动按钮。在我的情况下,我担心移动每个按钮会涉及到太多的 NSTimers,但最后我使用了一个计时器,它循环遍历一组按钮并一个一个地移动它们。
【讨论】:
【参考方案3】:如果您希望按钮在移动时响应触摸,我很确定您必须使用 Core Animation,但我从未这样做过,所以这实际上更像是一个提示而不是一个答案!
【讨论】:
确实,我希望你是对的。知道要使用哪些类吗?我尝试了 CAKeyframeAnimation,移动了图层的“位置”属性,但同样的问题。与 CABasicAnimation 一样。我会坚持下去,只是希望有人能早点给我指点?也许我应该使用 NSTimer 更新按钮的位置?但是,如果有多个按钮,这会变得非常混乱......【参考方案4】:我同意。我认为问题在于您没有使用核心动画。我不敢相信你自己也想不通。
【讨论】:
好吧,如果您需要一个 iPhone 应用程序,您就知道该去哪里了。前提是它不使用核心动画:)以上是关于动画移动 UIButton 在移动时不响应触摸/点击的主要内容,如果未能解决你的问题,请参考以下文章