[英]Button with double action (tap & long press) in SwiftUI
是否可以在 SwiftUI 中设置一个点击动作和长按不同动作的按钮?
我试过这个:
Button(action: {
self.handleButtonTap()
})
{
Text("My nice button")
.foregroundColor(.primary)
}
.onLongPressGesture {
print("Long pressed!")
}
或者代替:
.onLongPressGesture {
print("Long pressed!")
}
使用这个:
.gesture(longPress)
长按是这样的:
var longPress: some Gesture {
....
}
但似乎没有任何效果。 充其量我已经能够将长按手势附加到按钮的文本上,但即使在那种情况下,正常的点击也会停止工作。
任何好的建议将不胜感激。
这是另一种解决方案,它不会在每次长按后触发常规的点击操作。
Button("Button") {
// No tap action here
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
print("Long-pressed")
})
.simultaneousGesture(TapGesture().onEnded {
print("Tapped")
})
我在这篇博文中了解了这一点: Supporting Both Tap and Long Press on a Button in SwiftUI
注意:对于 Catalyst,这可能无法按预期工作,您可以在上面的博客文章中了解更多信息。
请检查这是否适合您:
Button("Button") {
print("tapped")
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
print("long pressed")
})
请注意,在上述代码中,每次长按后都会执行点击操作。 你可以用一个简单的 Bool 来处理这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.