前提・実現したいこと
CollectionView内でtouchesBegan、touchesMoved、touchesEndedを検知したいと考えています。
touchesBeganを下記のように実装したのですが、タッチを検知しません。
ViewController内ではできたのですが、CollectionViewでもタッチ(開始、動き、終了)を検知する方法がありましたらご教授ください。
該当のソースコード
Swift
1//SampleCollectionViewController内 2 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 3 print("タッチ開始") 4 }
Swift
1extension UICollectionView { 2 open override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 3 (delegate as? UIViewController)?.touchesBegan(touches, with: event) 4 } 5}
試したこと
同じような実装をViewController内ではできました。
補足情報(FW/ツールのバージョンなど)
Swift5 Xcode11.4.1
UICollectionView (というかそのスーパークラスの UIScrollView) 自体がスクロール処理のためにイベントを処理しているので、view controller までイベントが回ってきません。collection view に gesture recognizer をセットしましょう。
https://stackoverflow.com/questions/30120852/handle-touch-in-uicollectionview
あなたの回答
tips
プレビュー