接收用户交互轮动画

时间:2014-03-06 15:33:38

标签: ios objective-c uianimation

UI动画非常棒,非常易于使用,并且可以使用。我遇到的唯一问题是,当动画移动时,视图没有接收到任何用户交互。

例如,如果一个UIButton每次显示都会动画,但在动画结束之前用户将无法点击它。

//这是一个UIButton:

- (void)animationApear
{
     CGRect frameSelf = self.frame;
     frameSelf.origin.y -= frameSelf.size.height;

     [UIView animateWithDuration:1.0 delay:0
          usingSpringWithDamping:0.8 initialSpringVelocity:0
                         options:0
                      animations:^{

                        [self setFrame:frameSelf];

                    } completion:nil];
}

有什么方法可以解决这个问题吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

您需要提供选项UIViewAnimationOptionAllowUserInteraction

答案 1 :(得分:0)

此外,根据您的视图架构,如果按钮位于动画视图或其子视图内,则按钮的实际位置不会移动。只有按钮的表示层正在移动,这就是按钮可能没有接收点击的原因。一个好的测试是在动画开始时点击按钮的位置(并确保选项UIViewAnimationOptionAllowUserInteraction打开)以查看它是否仍在接收点击。

在解决方案上,当你真正需要为按钮设置动画时,就是重复进行短变换(例如CGAffineTransforms)并将这些动作聚合在一起,创建动画的视觉效果。虽然在这种情况下按钮本身会移动,而不仅仅是它的呈现。