iOS
Swift

セルにジェスチャーを登録したらスクロールが反応しない問題

これもあとでちゃんと書く

よくあるセルを横にスライドさせたら後ろから削除ボタンが出てくるやつをやろうとしてUIPanGestureRecognizer登録したらテーブルの縦スクロールが反応しなくなりました

なんか前も同じことで困ってどうやって解決したか忘れたのでメモ

class SwipeView:UIView{
  func setupGesture(){
    let gesture = UIPanGestureRecognizer(target: self, action: #selector(dragGesture(sender:)))
    gesture.delegate = self //デリゲートを忘れないように
    self.addGestureRecognizer(gesture)
  }
}

extension SwipeView:UIGestureRecognizerDelegate{
  //条件を満たすジェスチャーの動き以外はfalseにしてselectorにいかないようにする
  override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
    if let pan = gestureRecognizer as? UIPanGestureRecognizer {
      let translation = pan.translation(in: self)
      //横方向のスライドの時のみgestureを反応させる
      if fabs(translation.x) > fabs(translation.y) {
        return true
      }
      return false
    }
    return false
  }
}