UITableView在滚动期间停止渲染

时间:2012-02-17 12:19:21

标签: ios uitableview uiscrollview rendering

简介

目前我有一个UITableView,其中填充了自定义单元格,显示当前正在上传到服务器的文件的上传进度。上传过程只是使用NSURLConnection的标准异步方法在后台异步运行的NSURLConnection对象。

问题是在滚动期间,UITableView,或者我想UITableview的UIScrollView,有点阻止整个主线程,这样做的重要信息,例如我的文件的上传过程等都不会更新,直到UIScrollView处于停滞状态。

研究

现在我确实碰到了我想在这篇文章中与我的完全相同的问题:类似的问题

所以似乎整个主线程都被阻止了。我也成功地添加了一个像上面的帖子一样的计时器,即使在滚动期间也会被调用。但是......不幸的是,它并没有真正解决我的情况。

问题仍然是NSURLConnection对象被阻止,这意味着NSURLConnection deletage方法:didSendBodyData

仍然没有被调用,这是我将新的字节数写入服务器等等,所以我根本无法接收数据。

有没有解决这个问题的方法?我是否必须创建某种自定义UIScrollView或类似的东西来解决限制,比如创建自己的滚动机制?

1 个答案:

答案 0 :(得分:3)

您是否考虑过移动NSURLConnection代码以在后台线程上运行?这应该允许它在用户滚动时运行。

您的UITableViewUIScrollView(您提到过),这意味着您可以针对它注册UIScrollViewDelegate。如果您实施scrollViewDidScroll:,您可以有效地进行主线索调查,看看您是否还有来自NSURLConnection的结果。