有没有办法让按钮根据是否被按下或按住而具有两个单独的操作?

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

我正在尝试在 Swift 中制作一个按钮,并根据您是否点击它或按下并按住它来执行两个单独的操作。但我也希望它仅在您按住按钮后释放按钮后才打开页面,但我在任何地方都无法弄清楚这一点。任何帮助将不胜感激!!

我尝试使用 .TapGesture 和 .simultaneousGesture(LongPressGesture) 但没有成功。

ios swift button gesture
1个回答
0
投票
当按下的持续时间达到

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
的行为。

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