touchesMoved在没有touchesBegan的情况下调用

时间:2012-03-13 00:00:47

标签: iphone objective-c ios touchesbegan touchesmoved

我在容器中有很多自定义UIViews,我会在用户移动它们后进行动画处理。要跟踪他们的移动,我会使用touchesBegan:获取当前位置,并使用touchesMoved:更新位置。

有时候,特别是如果我最近移动了一个视图(并且它可能仍然会动画回到其原始位置),如果我开始拖动另一个视图,则不会调用touchesBegan:选择器,而是{{ 1}}和touchesMoved:将是。如果首先在视图中调用touchesEnded:,如何调用touchesMoved:touchesEnded:

2 个答案:

答案 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等事件。也许正确的事件正在解雇,但是日志消息显示为“乱序”?