如何防止reloadRowsAtIndexPaths阻止用户输入?

时间:2011-07-28 10:50:22

标签: iphone ios uitableview scroll

我已经为分页的REST服务实现了一个客户端,我用空条目填充整个表,然后在用户开始滚动表时使用分页在后台加载它们。

除了一些细节之外,这似乎工作得非常好:我在主UI线程中调用reloadRowsAtIndexPaths:(因为UIKit需要这样),而我感觉动画有时会让我失去输入接触。

这是,用户开始滚动列表并开始加载项目。有时重新加载动画在用户再次触摸屏幕的同时发生,并且不能识别该触摸。然后滚动不会继续并停止。它不会一直发生,我想这是一个不常见的用户案例(用户需要在向下滚动之前读取每一行结果),但它让我感到厌烦。

我正在使用块执行大部分动画,并且标志UIViewAnimationOptionAllowUserInteraction非常有用,因此有reloadRowsAtIndexPaths的块版本,其中重新加载动画不会阻止用户与滚动的交互?

1 个答案:

答案 0 :(得分:2)

我认为您寻求的解决方案是在线程中背景加载数据(如您所述),并且只有在收到数据并准备好显示后才调用reloadRowsAtIndexPaths:。您还应该重新显示未设置动画的数据。

我不认为你可以采取任何措施来绕过目前的计划。我的建议是“做iOS想要的”,而不是“尝试哄骗iOS来做你想做的事”。是的,可能不是你想听到的答案,但我认为这就是它的工作方式。

(顺便说一下,你总是可以使用bugreporter.apple.com来提出增强请求!:)