1

私がこれを尋ねる理由についてのいくつかの文脈:

UIBezierPaths を使用して直接描画する UIScrollView があります。多くの/長いパスがあり、ユーザーがスクロールビューをスクロールし始めると、drawRect ですべてのパスを描画することができなくなります。

そこで、起動時にすべてのパスを (網膜を使用せず、平坦度を下げて) uiimageview に描画する場所を回避しましたscrollViewWillBeginDragging:。このイメージビューをスクロールビューに追加し、drawRect でのパスの描画を一時的に停止します。

次に、このイメージビューをスクロールビューから削除し、これらのいずれかが起動したときに nil に設定します: scrollViewDidEndDragging:willDecelerate:(の場合のみdecelerate == NO) scrollViewDidEndDecelerating:

これはすべてうまくいきます。描画は速く、スクロールは高速です。

ただし、次の場合に 1 つの問題があります。

  1. ユーザーがスクロールを開始し、画面をすばやく離すと、スクロールビューが減速し始めます。
  2. 次に、スクロールビューがまだ減速しているときにユーザーがスクロールビューをタップすると、スクロールビューがすぐに停止します。

scrollViewDidEnd:この時点では、どちらの関数も呼び出されません。したがって、私のイメージビューは削除されず、メモリに残ります (さらに悪いことに、非網膜の平坦度の低い曲線がまだ表示されています)。

私の質問:

減速中にユーザーが UIScrollView をタップしたことを知るにはどうすればよいですか?

4

1 に答える 1

0

私は自分で答えを見つけました: -(void)scrollViewWillBeginDragging は、ユーザーが減速中にスクロールビューをタップすると再度呼び出されます。

于 2013-05-28T09:47:32.307 に答える