如何使用 SwiftUI 对列表中的项目实现长按手势?

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

我正在尝试使用 SwiftUI 在列表中的每个项目上实现 长按手势。 最终目标类似于 iPhone 上的电子邮件应用程序 - 您可以上下滑动进行浏览,可以向左滑动并删除项目,还可以长按电子邮件并执行其他操作。

使用 SwiftUI,在为每个项目实现长按手势后,我根本无法滑动列表。似乎每个项目上的长按手势都取消了滑动操作

ios swiftui
1个回答
6
投票

我正在更新解决方案here,因为长按时它会出现一些明显的延迟(超出您对长按手势的预期)。因此,为了缓解这种情况,您可以使用

onLongPressGesture(minimumDuration:)
设置您满意的持续时间。

请参阅下面的示例

List {
    ForEach(0..<100) { x in
        Text("List number -\(x)")
            .onTapGesture {}.onLongPressGesture(minimumDuration: 0.2) { // Setting the minimumDuration to ~0.2 reduces the delay
                print("long press \(x)")
            }
    }
}

注意: 一个接一个地拥有两个

.onTapGesture {}.onLongPressGesture{}
非常重要。否则上述方法将不起作用。

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