SwiftUI 中具有双重动作(点击和长按)的按钮
Posted
技术标签:
【中文标题】SwiftUI 中具有双重动作(点击和长按)的按钮【英文标题】:Button with double action (tap & long press) in SwiftUI 【发布时间】:2020-07-09 03:29:16 【问题描述】:是否可以在 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
....
但似乎没有任何效果。 充其量我已经能够将长按手势附加到按钮的文本上,但即使在这种情况下,正常的点击也会停止工作。
我们将不胜感激任何好的建议。
【问题讨论】:
【参考方案1】:请检查这是否适合您:
Button("Button")
print("tapped")
.simultaneousGesture(LongPressGesture().onEnded _ in
print("long pressed")
)
请注意,在上述代码中,每次长按后都会执行点击操作。你可以用一个简单的 Bool 来处理这个问题。
【讨论】:
是的,它有效。正如你提到的,它可以用布尔值来处理。 更多细节,在某些情况下;不需要布尔工作,因为主要操作没有被调用。就像你在长按动作中调出另一个视图一样。以上是关于SwiftUI 中具有双重动作(点击和长按)的按钮的主要内容,如果未能解决你的问题,请参考以下文章