UITableView 在滚动期间停止渲染
Posted
技术标签:
【中文标题】UITableView 在滚动期间停止渲染【英文标题】:UITablewView stops renderings during scrolling 【发布时间】:2012-02-17 12:19:21 【问题描述】:简介
目前我有一个 UITableView,其中填充了自定义单元格,显示当前上传到服务器的文件的上传进度。上传过程只是使用 NSURLConnection 的标准异步方法在后台异步运行的 NSURLConnection 对象。
问题是,在滚动过程中,UITableView 或者我想 UITableview 的 UIScrollView 会阻塞整个主线程,这会导致诸如文件上传过程等重要信息直到UIScrollView 处于静止状态。
研究
现在我确实碰到了我认为与我在这篇文章中的完全相同的问题:类似问题
所以看起来整个主线程都被阻塞了。我还成功地添加了上面帖子中的计时器,即使在滚动过程中也会被调用。但是......不幸的是它并没有真正解决我的情况。
问题仍然是 NSURLConnection 对象被阻塞,这意味着 NSURLConnection 删除方法:didSendBodyData
仍然没有被调用,这是我获得写入服务器的新字节数的地方等等,所以我根本无法接收数据。
有没有办法解决这个问题?我是否必须创建某种自定义 UIScrollView 或类似的东西来绕过限制,比如创建自己的滚动机制?
【问题讨论】:
【参考方案1】:您是否考虑过将NSURLConnection
代码移动到后台线程上运行?这应该允许它在用户滚动时运行。
您的UITableView
是UIScrollView
(您提到过),这意味着您可以针对它注册UIScrollViewDelegate
。如果你实现了scrollViewDidScroll:
,你可以有效地让你的主线程轮询,看看你是否有来自NSURLConnection
的结果。
【讨论】:
这听起来是个好主意 :) 绝对是我会研究的!谢谢! :)以上是关于UITableView 在滚动期间停止渲染的主要内容,如果未能解决你的问题,请参考以下文章