🐯

iOS | UISwipeGestureRecognizer でスワイプが認識できないとき

2022/07/11に公開

UITapGestureRecognizer は認識できるのに UISwipeGestureRecognizer が認識できずにハマったので備忘録です。

UIGestureRecognizerDelegate で複数の Gesture を許可する

UIGestureRecognizerDelegate で以下の設定を行えば認識できる可能性があります。

class HogeViewController: UIViewController, UIGestureRecognizerDelegate {
    ...
    
    // 追加
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
    }
}

こちらの記事に詳しく書かれていますが、shouldRecognizeSimultaneouslyWith は複数の Gesture を同時認識させる設定です。しっかりと理解できていない部分もありますが、スクロール可能なビューがネストして設置されているような場合に必要な設定だと思われます。

Android の場合も、ScrollView の中に ScrollView を入れると意図どおりに動いてくれず、NestedScrollView を使うなどひと捻り必要でした(たしか)。単にスクロール可能なビューの中にスクロール可能なビューを置くだけではダメよ、ってことですね。

Discussion