文字っぽいの。

文字を書いています。写真も混ざります。

UIScrollViewがスクロール中かどうか判定する

やりたいこと

  • UIScrollView, UITableView, UICollectionViewなどがスクロール中かどうか知りたい
  • タップはしてないけどまだ慣性スクロールが続いてるとか
  • 見た目上動いてないけどユーザーが指を置いていてスクロール状態だとか

解決コード

こんな感じのコードを書けば良い

override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    isScrolling = true
}

override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    if decelerate {
        isScrolling = true
    } else {
        isScrolling = false
    }
}

override func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    isScrolling = false
}

isScrollingtrueのときはスクロール中で false のときはスクロールしてないとして、他の機能を実装していくといい感じになる。