我在容器中有许多自定义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/