【Swift5】UITableView(CollectionView)のスクロールが止まった時に処理させたい場合

UITableView や UICollectionView のスクロールが止まった時に処理させたい場合、
毎回毎回「UITableView 止まったとき」みたいに調べてたので、備忘録として…w

前提条件

・Xcode11.6
・Swift5

やりたいこと

・慣性の有無に関わらず、どちらで止まった際も処理は行わせたい
・重複して処理することがないようにする
って感じです。
UIScrollView の Delegate は地味に多くて、細かい挙動までは忘れてしまいます。

実装

エクステンションで追加できるよう、コードを記載します。

scrollViewDidEndDecelerating はスクロールが自動で止まったときに走ります。

scrollViewDidEndDragging はドラッグの開始と終了の両方で呼ばれます。
decelerate == true → ドラッグ開始
decelerate == false → ドラッグ終了

簡単に言うと、スクロールが停止したのが「自動」か「手動」かの違いです。
この2つのメソッドにスクロール停止時の処理を記載したら、必ずどちらかが動きます。

違うよ!とかこういう方法あるよ!ってのがあれば教えてください。
では( ¯·ω·¯ )

コメント