我正在尝试使用 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{}
非常重要。否则上述方法将不起作用。