首页 > 解决方案 > TabView 滑动手势在使用 LongPressGesture 的视图上不起作用

问题描述

我正在尝试将 a 添加LongPressGesture到充当显示工作表的按钮的视图中。当它是一个Button它工作正常并且在视图之间滑动工作。但是当我删除按钮并将 a 添加LongPressGesture到视图时,只有长按有效,您不能再在视图上左右TabView滑动,只能在视图上方或下方滑动(示例如下)。

我假设这里有一些手势优先级,谁能告诉我让TabView滑动手势优先于LongPressGesture?

import SwiftUI

struct ContentView: View {
    @State private var toggleSheet: Bool = false
    @GestureState private var isDetectingLongPress: Bool = false

    var body: some View {
        TabView {
            Text("1")
                .font(Font.system(size: 300))
                .gesture(
                    LongPressGesture().updating(self.$isDetectingLongPress) {
                        currentState, gestu[![enter image description here][1]][1]reState, transaction in
                        gestureState = currentState
                    }
                        .onEnded {
                            _ in
                            self.toggleSheet.toggle()
                        }
                )
                .sheet(isPresented: self.$toggleSheet) {
                    Rectangle()
                }
                
            Text("2")
                .font(Font.system(size: 300))
                .gesture(
                    LongPressGesture().updating(self.$isDetectingLongPress) {
                        currentState, gestureState, transaction in
                        gestureState = currentState
                    }
                        .onEnded {
                            _ in
                            self.toggleSheet.toggle()
                        }
                )
                .sheet(isPresented: self.$toggleSheet) {
                    Circle()
                }
        }
        .tabViewStyle(PageTabViewStyle())
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

在 giphy 中很难看到,但是当我滑动鼠标时,我的鼠标在视图的上方或下方。

在此处输入图像描述

标签: iosswiftswiftui

解决方案


推荐阅读