我在容器中有很多自定义UIViews,我会在用户移动它们后进行动画处理。要跟踪他们的移动,我会使用touchesBegan:
获取当前位置,并使用touchesMoved:
更新位置。
有时候,特别是如果我最近移动了一个视图(并且它可能仍然会动画回到其原始位置),如果我开始拖动另一个视图,则不会调用touchesBegan:
选择器,而是{{ 1}}和touchesMoved:
将是。如果首先在视图中调用touchesEnded:
,如何调用touchesMoved:
和touchesEnded:
?
答案 0 :(得分:2)
我发现我的应用程序存在类似问题。当我将视图设置为另一个视图的动画时,如果我快速触摸第一个视图并开始滑动,则touchesBegan事件永远不会发生,但是一旦第一个视图消失,我就开始获得touchesMoved。
根据这个答案,app starts ignores user interaction events when i call animateWithDuration:delay:options:animations:completion:,用户互动事件在制作动画时会被忽略,我认为这与我们所看到的一致。尝试使用UIViewAnimationOptionAllowUserInteraction
选项或userInteractionEnabled
属性;应该根据需要允许事件通过。
答案 1 :(得分:1)
可能值得重新阅读Apple docs。我不确定是否touchesBegan
保证被调用。
我猜你正在记录touchesBegan
等事件。也许正确的事件正在解雇,但是日志消息显示为“乱序”?