有没有办法在 SwiftUI 中成功地将 ScrollView 与拖动手势结合起来?

问题描述 投票:0回答:1

我本以为这在 SwiftUI 中是微不足道的,但显然不是。

想象一个项目列表,每个项目都有一些文本,在 ScrollView 或滚动的东西(可能是 VStack)中。该列表将离开屏幕,以便用户可以滚动查看底部。

我也希望能够通过拖动项目来重新排序该列表。让我们假设一秒的延迟,然后您才能“拾取”该项目,然后拖动以重新排序。延迟是为了不与滚动冲突。并且拖动的项目应该看起来与未拖动的项目完全相同(除了阴影或轮廓或其他东西)

这可以用 SwiftUI 实现吗?

swift swiftui uiscrollview scrollview gesture
1个回答
0
投票

尝试在

List
上使用
.onMove
ForEach
回调:

struct ContentView: View {
    @State private var rows: [Int] = Array(1...100)
    var body: some View {
        List {
            ForEach(rows, id: \.self) { i in
                Text("Row \(i)")
            }
            .onMove { fromOffsets, toOffset in
                rows.move(fromOffsets: fromOffsets, toOffset: toOffset)
            }
        }
    }
}

Animation

© www.soinside.com 2019 - 2024. All rights reserved.