我正在尝试在 Swift 中制作一个按钮,并根据您是否点击它或按下并按住它来执行两个单独的操作。但我也希望它仅在您按住按钮后释放按钮后才打开页面,但我在任何地方都无法弄清楚这一点。任何帮助将不胜感激!!
我尝试使用 .TapGesture 和 .simultaneousGesture(LongPressGesture) 但没有成功。
LongPressGesture
时,
minimumDuration
结束,而不是当手指抬起时(触摸结束)。
DragGesture
确实在触摸结束时结束,因此您可以使用它来检测释放按钮,并在结束后使用额外的 LongPressGesture
将标志设置为 true。然后,您将根据标志执行两种不同的操作之一。
例如,这里是一个示例,当触摸持续时间少于 2 秒时,按钮打印“Tap Action”,当触摸持续时间超过 2 秒时,按钮打印“Long Press Action”。
@State private var isLongPress = false
...
.simultaneousGesture(
DragGesture(minimumDistance: 0).onEnded { _ in
if isLongPress {
print("Long Press Action")
} else {
print("Tap Action")
}
isLongPress = false
}
)
.simultaneousGesture(
LongPressGesture(minimumDuration: 2, maximumDistance: .infinity)
.onEnded { _ in
isLongPress = true
}
)
“点击”的最大持续时间(由
TapGesture
检测到)没有记录,因此您无法使用此方法精确复制 onTapGesture
的行为。