0
  • 我有一个滚动视图,其中包含 12 个设置为图块的UIView 。每个图块都包含一个 textView。

  • scrollView 启用了分页。因此,每页有 12 个图块,并且水平滚动。

  • 每当我收到来自 API 调用的信息时,我都会更新 textView。

这是正确更新 textView,但我有一个大问题。每当更新发生时,scrollView 实际上会滚动到刚刚更新的视图。因此,每当我加载一列新的图块时,滚动视图会在开始加载时停止,即使它有动量!

知道可能是什么原因造成的吗?

如果我在没有任何信息的情况下延迟加载单元格,那么一切正常,所以我认为这与我更新 textView 有关。

我已经尝试过:

  • 使用NSTimer(并将其模式设置为 NSRunLoopCommonModes)。
  • 每当我需要更新 UI 更改时,使用NSOperationQueue并调用主线程。

这些都没有奏效。

4

2 回答 2

0

我的建议是使用仪器对其进行调试。在 Instrument 中有一个名为“Time profiler”的跟踪模板,您实际上可以看到您的应用程序在每个任务上花费了多少时间。但是如果你正在更新 textViews,当然主线程会被阻塞,所以滚动视图会停止滚动,直到所有的 textViews 都被更新。所以我的建议是调整性能。也许您在每个 textView 中加载了太多东西?

于 2012-04-22T04:44:40.823 回答
0

NSOperationQueue我认为解决方案在您的帖子中:“每当我需要更新 UI 更改时使用并调用主线程。”

每当 scrollView 调用 willScroll 时,停止当前正在下载的图像 & 当滚动视图停止滚动 & 其委托方法被调用时,启动新队列以下载图像。

于 2012-04-20T07:10:32.240 回答