我正在尝试在 Xcode 4.2 中制作一个针对 iPhone 的小应用程序。我想要的是一个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 位置,我可以按下它,即使它还没有动画到那里。
当视图处于动画状态时,触摸事件在 iOS 中无法正常工作。当视图位于源位置时,您可以触摸视图,或者当视图位于目标位置时,您可以触摸视图,但触摸事件不会针对视图在动画时所处的位置正确触发。
为了解决这个问题,您必须在视图动画时禁用用户交互,并忘记在动画时触摸事物的想法,或者您可以用另一个启用了用户交互的固定视图覆盖动画视图,从而拦截动画视图触摸事件,然后尝试确定触摸事件是否在动画视图区域中。您可以使用以下方法执行此操作:
CGPoint animatingViewPosition = [(CALayer*)[animatingView.layer presentationLayer] position];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)