用户在动画UIButton上的互动

时间:2011-10-25 10:48:52

标签: objective-c ios cocoa-touch uibutton uiviewanimation

我正在尝试在针对iPhone的Xcode 4.2中制作一个小应用程序。我想要的是一个UIButton在屏幕上动画,当你按下它时,你将它的alpha设置为0.我找到了UIView类中能够处理用户交互的方法,并来到这个代码:

    [UIView animateWithDuration:3.0 
                      delay:0
                    options: UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionAllowAnimatedContent
                 animations: ^{ CGRect myRect = enemy1.frame;
                     myRect.origin.y = 300;
                     myButton.frame = myRect;
                 }
                 completion:nil];

现在,这可以正确地完成动画,但问题是它会立即将origin.y设置为300,这意味着我无法按下“按下滑动”按钮。我只能在origin.y 300位置按下它,我可以按它,即使它还没有动画到那里。

2 个答案:

答案 0 :(得分:6)

在视图为动画时,触摸事件在iOS中无法正常工作。您可以在位于源位置时触摸视图,或者在位于目标位置时触摸视图,但触摸事件将无法正确触发视图在动画处理时所处的位置。

要处理此问题,您必须在视图动画时禁用用户互动,并忘记在动画时触摸事物的想法,或者您可以使用启用了用户交互的另一个固定视图覆盖动画视图因此拦截触摸事件,然后试图确定触摸事件是否在动画视图区域中。您可以使用以下方式执行此操作:

CGPoint animatingViewPosition = [(CALayer*)[animatingView.layer presentationLayer] position];

答案 1 :(得分:1)

你可以使用,

button.frame = CGRectMake(100, 100, 60, 40);
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:4.0];
button.frame = CGRectMake(100, 300, 60, 40);    
[UIView commitAnimations];