【问题标题】:How do I prevent reloadRowsAtIndexPaths to block the user input?如何防止 reloadRowsAtIndexPaths 阻止用户输入?
【发布时间】:2011-07-28 10:50:22
【问题描述】:

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

这似乎工作得很好,除了一点细节:我在主 UI 线程中调用 reloadRowsAtIndexPaths:(因为 UIKit 需要这样做),我感觉动画有时让我失去输入触摸。

也就是说,用户开始滚动列表并开始加载项目。有时在用户刚刚再次触摸屏幕的同时会出现重新加载动画,并且无法识别此触摸。然后滚动不会继续并停止。它不会一直发生,我猜这是一个不常见的用户案例(用户应该在向下滚动之前阅读每一行结果),但这让我很恼火。

我的大部分动画都是用块来制作的,标志 UIViewAnimationOptionAllowUserInteraction 真的很有帮助,那么是否有 reloadRowsAtIndexPaths 的块版本,其中重新加载动画不会阻止用户与滚动交互?

【问题讨论】:

  • 你能显示你用来重新加载项目的代码吗?您是否在单独的线程中进行 REST 调用?您如何向用户指示正在开始加载?

标签: iphone ios uitableview scroll


【解决方案1】:

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

我不认为你可以做任何事情来避免你当前的计划错过的接触。我的建议是“做 iOS 想做的事”,而不是“试着哄着 iOS 做你想做的事”。是的,可能不是您想听到的答案,但我认为这就是它的工作方式。

(顺便说一句,您可以随时使用bugreporter.apple.com 提出增强请求!:)

【讨论】:

  • 到目前为止,使用错误报告器比与墙壁交谈更糟糕,但阅读您的帖子让我想起了我现在要尝试的事情......
  • 不,不工作。让我们使用 bugreporter 并希望一切顺利。
猜你喜欢
  • 2014-02-14
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多