我在容器中有许多自定义UIView,我在用户移动它们后对其进行动画处理。为了跟踪他们的运动,我使用touchesBegan:获取当前位置,并使用touchesMoved:更新位置。

有时,尤其是如果我最近移动了一个视图(并且它可能仍会重新设置其原始位置的动画)时,如果我开始拖动另一个视图,则不会调用touchesBegan:选择器,但会调用touchesMoved:touchesEnded:。如何在不首先在视图上调用touchesMoved:的情况下调用touchesEnded:touchesBegan:

最佳答案

我的应用发现了类似的问题。当我为另一个视图设置动画时,如果我快速触摸第一个视图并开始滑动,则touchesBegan事件将永远不会发生,但是一旦第一个视图消失,我就会开始获得touchesMoved。

根据这个答案app starts ignores user interaction events when i call animateWithDuration:delay:options:animations:completion:,在进行动画时,用户交互事件将被忽略,我认为这与我们俩都看到的一致。尝试使用UIViewAnimationOptionAllowUserInteraction选项或userInteractionEnabled属性;应该可以根据需要允许事件通过。

关于iphone - touchesMoved调用时没有touches开始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9676545/

10-10 13:54