相关疑难解决方法(0)

SwiftUI | 如果被 ScrollView 取消,则不会调用 DragGestures onEnded

我有以下问题。

我有一个View内部的ScrollView,我想拖。现在,一切正常,发生拖动和滚动。但是,一旦我尝试同时执行这两项操作,dragOffset似乎就会停留,而不是重置到其初始位置。

更何况,onEndedDragGesture永远不会发生。我怎样才能阻止这种情况发生并将绿色重置Rectangle到其初始位置?

视觉表现

拖动或滚动工作得很好。

但是每当我同时做这件事时,就会发生这种情况。

演示代码

struct ContentView: View {
    
    @State private var dragOffset: CGSize = .zero
    
    
    var body: some View {
        ScrollView {
            Rectangle()
                .frame(width: UIScreen.main.bounds.size.width, height: 300)
                .foregroundColor(.green)
                .offset(x: dragOffset.width)
        }
        .gesture(DragGesture()
            .onChanged { value in
                dragOffset = value.translation
            }
            .onEnded { value in
                dragOffset = .zero
            }
        )
        .animation(.default)
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

ios swift swiftui

7
推荐指数
1
解决办法
657
查看次数

标签 统计

ios ×1

swift ×1

swiftui ×1