【问题标题】:How to implement long press gesture on items within a list using SwiftUI?如何使用 SwiftUI 在列表中的项目上实现长按手势?
【发布时间】:2021-11-10 04:23:15
【问题描述】:

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

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

【问题讨论】:

  • 能否提供代码?

标签: ios swiftui


【解决方案1】:

我正在更新解决方案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{} 一个接一个接上一个很重要。否则上述方法将不起作用。

【讨论】:

  • 我使用了 .gesture(longPress) 并实现了 longPress,而您使用了 .onTapGesture 和 .onLongPressGesture。同时。我测试了你必须同时保留它们,onTapGesture 和 onLongPressGesture,以便同时滑动和长按工作
  • 是的,对不起,如果我没有说清楚,让我将其添加到答案中
猜你喜欢
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多