2

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

有时,特别是如果我最近移动了一个视图(并且它可能仍在动画回其原始位置),如果我开始拖动另一个视图,touchesBegan:则不会调用选择器,但touchesMoved:会调用touchesEnded:。如果不先在视图上调用,touchesMoved:如何调用?touchesEnded:touchesBegan:

4

2 回答 2

2

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

根据这个答案,当我调用 animateWithDuration:delay:options:animations:completion: 时,应用程序开始忽略用户交互事件,用户交互事件在动画时被忽略,我认为这与我们所看到的一致。尝试使用UIViewAnimationOptionAllowUserInteraction选项或userInteractionEnabled属性;这应该允许您根据需要进行事件。

于 2012-09-08T12:50:15.387 回答
1

可能值得重新阅读Apple 文档。我不确定是否touchesBegan保证被调用。

我猜你正在记录touchesBegan等事件。也许正确的事件正在触发,但日志消息出现“乱序”?

于 2012-03-13T02:17:08.500 回答