关于ios:UITableView在滚动时停止渲染 | 珊瑚贝

UITablewView stops renderings during scrolling


简介

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

问题是,在滚动过程中,UITableView 或者我想 UITableview 的 UIScrollView 会阻塞整个主线程,这会导致诸如文件上传过程等重要信息直到UIScrollView 处于静止状态。

研究

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

所以看起来整个主线程都被阻塞了。我还成功地添加了上面帖子中的计时器,即使在滚动期间也会被调用。但是……不幸的是它并没有真正解决我的情况。

问题仍然是 NSURLConnection 对象被阻塞,这意味着 NSURLConnection 删除方法:didSendBodyData

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

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


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

你的 UITableView 是一个 UIScrollView (你提到过),这意味着你可以针对它注册一个 UIScrollViewDelegate 。如果您实现 scrollViewDidScroll: 您可以有效地让您的主线程轮询以查看您是否有来自 NSURLConnection 的结果。

  • 这听起来是个好主意 :) 绝对是我会研究的!谢谢! :)


来源:https://www.codenong.com/9328073/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8873.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?