【发布时间】:2021-11-10 04:23:15
【问题描述】:
我正在尝试使用 SwiftUI 在列表中的每个项目上实现 长按手势。 最终目标类似于 iPhone 上的电子邮件应用程序——可以上下滑动浏览,可以向左滑动删除项目,还可以长按电子邮件并执行其他操作。
使用 SwiftUI,在为每个项目实现长按手势后,我根本无法滑动列表。似乎每个项目上的长按手势正在取消滑动操作
【问题讨论】:
-
能否提供代码?
我正在尝试使用 SwiftUI 在列表中的每个项目上实现 长按手势。 最终目标类似于 iPhone 上的电子邮件应用程序——可以上下滑动浏览,可以向左滑动删除项目,还可以长按电子邮件并执行其他操作。
使用 SwiftUI,在为每个项目实现长按手势后,我根本无法滑动列表。似乎每个项目上的长按手势正在取消滑动操作
【问题讨论】:
我正在更新解决方案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{} 一个接一个接上一个很重要。否则上述方法将不起作用。
【讨论】: