SwiftUI:如何在用户完成长按后以编程方式取消选择按钮?
SwiftUI: How can I deselect a button programmatically after the user completes a long press?
我有一个按钮,可以长按执行不同的操作。这就是问题所在:如果我在长按后松开按钮,同时仍然悬停在按钮上,点击动作仍然会触发。有没有一种方法可以在我的长按操作运行后自动 untap/deselect 按钮?谢谢
Button("Long Press Test") {
print("Button Tapped")
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
print("Long Press Successful")
})
您只需要将按钮操作块设为空即可。现在你只会得到长按动作。
Button(action: {})
{
Text("Long Press Test")
}
.simultaneousGesture(
LongPressGesture()
.onEnded { _ in
print("Long Press Successful")
}
)
您的点击操作需要有条件。 LongPressGesture
总是会首先触发,因为它对媒体有反应。 Tap
向左反应,所以在按下之后。在 LongPressGesture
中,您设置了一个标志,使操作在 Tap
中跳过,然后在条件后的 tap 中重置该标志。一个例子:
struct ButtonTapOrPress: View {
@State var longpPress = false
var body: some View {
Button("Long Press Test") {
if !longpPress {
print("Button Tapped")
}
longpPress = false
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
print("Long Press Successful")
longpPress = true
})
}
}
我有一个按钮,可以长按执行不同的操作。这就是问题所在:如果我在长按后松开按钮,同时仍然悬停在按钮上,点击动作仍然会触发。有没有一种方法可以在我的长按操作运行后自动 untap/deselect 按钮?谢谢
Button("Long Press Test") {
print("Button Tapped")
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
print("Long Press Successful")
})
您只需要将按钮操作块设为空即可。现在你只会得到长按动作。
Button(action: {})
{
Text("Long Press Test")
}
.simultaneousGesture(
LongPressGesture()
.onEnded { _ in
print("Long Press Successful")
}
)
您的点击操作需要有条件。 LongPressGesture
总是会首先触发,因为它对媒体有反应。 Tap
向左反应,所以在按下之后。在 LongPressGesture
中,您设置了一个标志,使操作在 Tap
中跳过,然后在条件后的 tap 中重置该标志。一个例子:
struct ButtonTapOrPress: View {
@State var longpPress = false
var body: some View {
Button("Long Press Test") {
if !longpPress {
print("Button Tapped")
}
longpPress = false
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
print("Long Press Successful")
longpPress = true
})
}
}