【Swift UI】ScrollViewでonLongPressGestureを使用するとスクロールできなくなるバグ解消

この記事からわかること

  • Swift UIScrollViewスクロール動作しないバグ解決方法
  • onLongPressGesture使用時に発生する?

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

ScrollViewでonLongPressGestureを使用するとスクロールできない?

Swift UIでScrollViewやListなどのスクロールできるビュー内のコンテンツにonLongPressGestureを使用するとスクロールできなくなるバグが発生しました。以下のようにシンプルに実装しただけですが、onLongPressGesture処理は正常に動作するのですが、スクロールを試みてもビューが動きませんでした。

struct ContentView: View {
    let data = Array(1...10)
    var body: some View {
        ScrollView(.horizontal, showsIndicators: false) {
            HStack(spacing: 10) {
                ForEach(data, id: \.self) { num in
                    Text("\(num)")
                        .frame(width: 80, height: 80)
                        .onLongPressGesture { 
                          // 長押しで実行したい処理
                        }
                }
            }
        }
    }
}

解決法

Longpress and list scrolling

解決方法はstack overflowに投稿されていた上記の記事に記載されていました。onLongPressGestureの前に空のonTapGestureを呼び出すことでスクロールが動作するようになりました。

struct ContentView: View {
    let data = Array(1...10)
    var body: some View {
        ScrollView(.horizontal, showsIndicators: false) {
            HStack(spacing: 10) {
                ForEach(data, id: \.self) { num in
                    Text("\(num)")
                        .frame(width: 80, height: 80)
                        .onTapGesture { }
                        .onLongPressGesture { 
                          // 長押しで実行したい処理
                        }
                }
            }
        }
    }
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index