4

AppleのWeather.appのように機能するアプリをコーディングしています。画面の下部にUIPageControlがあり、画面の中央にUIScrollViewがあります。私のコードでは- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView、ユーザーがいつ新しいページに移動したかを把握するためのメソッドを実装しました。新しいページに移動した場合は、隣接するページのデータを読み込んで、ページの切り替えをさらに高速化します。(Appleの例の1つでは、- (void)scrollViewDidScroll:(UIScrollView *)senderが使用されていますが、新しいページをロードするときにアプリがすぐにハングするため、適切ではありません。)このコードは非常にうまく機能します。

scrollRectToVisible:ユーザーがUIPageControlをクリックしたときに、プログラムでスクロールビュー内をスクロールするために:を使用しています。問題は、scrollRectToVisible:スクロールが完了したときにUIScrollViewDelegateに通知を送信しないことです。そのため、UIPageControlを使用しているときに、隣接するページの読み込みを担当するコードが呼び出されることはありません。

UIScrollViewがメソッドによって呼び出されたときにデリゲートに通知するscrollRectToVisible:方法はありますか?または、アプリがフリーズするのを防ぐためにスレッドを使用する必要がありますか?

ありがとう!

--Ry

4

2 に答える 2

4

どう-scrollViewDidEndScrollingAnimation:ですか?

うまくいかない場合は、UITextSelectionDidScroll通知を聞いてみてください。(もちろん非公開です。)

または、SDK セーフ メソッドは、アニメーションにかかった時間を測定し、の呼び出しサイトで遅延通知を送信します-scrollRectToVisible:

于 2010-04-10T12:08:58.217 に答える
2

代わりに、このデリゲート メソッドを追加できます。

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView

スクロール ビューは、UIScrollView および setContentOffset:animated: および scrollRectToVisible:animated: メソッドの実装の最後にこのメソッドを呼び出しますが、アニメーションが要求された場合のみです。

于 2010-11-29T03:20:28.313 に答える