【Swift UI】ScrollViewでonLongPressGestureを使用するとスクロールできなくなるバグ解消
この記事からわかること
- Swift UIでScrollViewのスクロールが動作しないバグの解決方法
- onLongPressGestureを使用時に発生する?
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Xcode:15.0.1
- iOS:17.0
- Swift:5.9
- macOS:Sonoma 14.1
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 {
// 長押しで実行したい処理
}
}
}
}
}
}
解決法
解決方法は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 {
// 長押しで実行したい処理
}
}
}
}
}
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。