更新的UITextView里面的UIScrollView而滚动,使滚动视图停止滚动
我有一个滚动视图包含12个UIViews集瓷砖。每个tile包含一个textView。更新的UITextView里面的UIScrollView而滚动,使滚动视图停止滚动
scrollView已启用分页。所以,每页有12个图块,并且水平滚动。
我正在更新textView,每当我从API调用接收信息。
这是正确更新textView,但我有一个巨大的问题。每当更新发生时,scrollView实际上会滚动到刚刚更新的视图。所以,无论何时我加载一列新的图块,当它开始加载时,滚动视图都会停止,即使它具有动量!
任何想法可能会造成这种情况?
如果我懒加载他们没有任何信息的单元格中的一切正常,所以我认为它必须与我更新textView。
我已经尝试:
- 使用的的NSTimer(和它的模式设置为NSRunLoopCommonModes)。
- 使用NSOperationQueue并在我需要更新UI更改时调用主线程。
这些都没有工作。
我认为解决方案在您的文章中: “使用NSOperationQueue
并在我需要更新UI更改时调用主线程。”
每当scrollView调用willScroll时,停止当前正在下载的图像&滚动视图停止滚动时&调用其委托方法启动新队列以下载图像。
我已经删除了NSOperationQueue(现在所有内容都在主线程中),但它仍然无法工作。 – OlivaresF 2012-04-20 15:55:50
我的建议是使用仪器进行调试。仪器中有一个名为“Time Profiler”的跟踪模板,你可以看到你的应用程序在每个任务上花费了多少时间。 但是,如果你正在更新textViews,当然主线程将被阻止,所以滚动视图停止滚动,直到所有的textViews更新。所以我的建议将会调整性能。 也许你在每个textView中加载了太多东西?
我只更新textViews的文本属性。不幸的是,我没有时间尽快作出回应,但我肯定会随着我最终发现的任何内容更新这篇文章(正如我的评论在那里指出我已将其更改为UILAbel)。 – OlivaresF 2012-04-22 23:28:20
我的解决方案是将UITextView更改为UILabel并没有发生任何事情。如果有人真的有答案,我会保持开放。 – OlivaresF 2012-04-22 04:18:40
你是说换成UILabel修复这个问题吗?尝试将UITextView editable属性更改为NO,并查看是否有帮助。确保在更新文本值时将UITextView上的委托设置为nil。 – 2012-05-14 18:54:48