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];
}
有什么方法可以解决这个问题吗?
谢谢!
答案 0 :(得分:3)
您需要提供选项UIViewAnimationOptionAllowUserInteraction
。
答案 1 :(得分:0)
此外,根据您的视图架构,如果按钮位于动画视图或其子视图内,则按钮的实际位置不会移动。只有按钮的表示层正在移动,这就是按钮可能没有接收点击的原因。一个好的测试是在动画开始时点击按钮的位置(并确保选项UIViewAnimationOptionAllowUserInteraction打开)以查看它是否仍在接收点击。
在解决方案上,当你真正需要为按钮设置动画时,就是重复进行短变换(例如CGAffineTransforms)并将这些动作聚合在一起,创建动画的视觉效果。虽然在这种情况下按钮本身会移动,而不仅仅是它的呈现。