0
  • タイルとして設定された 12個の UIViewを含むscrollViewがあります。各タイルには textView が含まれています。

  • scrollView ではページネーションが有効になっています。したがって、1 ページあたり 12 個のタイルがあり、水平方向にスクロールします。

  • API 呼び出しから情報を受け取るたびに、textView を更新しています。

これは textView を正しく更新していますが、大きな問題があります。更新が発生するたびに、scrollView は更新されたばかりのビューに実際にスクロールします。そのため、タイルの新しい列をロードするたびに、勢いがあっても、ロードを開始するとスクロールビューが停止します!

何がこれを引き起こしているのでしょうか?

情報なしでセルを遅延ロードすると、すべてが正常に機能するので、textView を更新する必要があると考えています。

私はすでに試しました:

  • NSTimerを使用する(およびそのモードを NSRunLoopCommonModes に設定する)。
  • NSOperationQueueを使用し、UI の変更を更新する必要があるときはいつでもメイン スレッドを呼び出します。

それらのどれも機能しませんでした。

4

2 に答える 2

0

私の提案は、楽器を使用してデバッグすることです。インストゥルメントには「Time profiler」という名前のトレース テンプレートがあり、アプリケーションが各タスクに費やした時間を実際に確認できます。ただし、textView を更新している場合は、もちろんメイン スレッドがブロックされるため、スクロール ビューはすべての textView が更新されるまでスクロールを停止します。したがって、私の提案はパフォーマンスを微調整することです。たぶん、各 textView にあまりにも多くのものをロードしていますか?

于 2012-04-22T04:44:40.823 に答える
0

解決策はあなたの投稿の中にあると思います:「NSOperationQueueUIの変更を更新する必要があるときはいつでもメインスレッドを使用して呼び出す」。

scrollView が wi​​llScroll を呼び出すたびに、ダウンロード中の現在の画像を停止し、スクロール ビューがスクロールを停止し、そのデリゲート メソッドが呼び出されたときに、新しいキューを開始して画像をダウンロードします。

于 2012-04-20T07:10:32.240 に答える