SwiftUI 中的双重操作按钮(点击和长按)
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") {
print("tapped")
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
print("long pressed")
})
请注意,在上面的代码中,每次长按后都会执行点击操作。你可以用一个简单的 Bool 来处理这个问题。
这是另一个不会在每次长按后触发常规点击操作的解决方案。
Button("Button") {
// No tap action here
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
print("Long-pressed")
})
.simultaneousGesture(TapGesture().onEnded {
print("Tapped")
})
我在这个博客中了解了这个 post:Supporting Both Tap and Long Press on a Button in SwiftUI
注意:对于 Catalyst 这可能无法按预期工作,您可以在上面的博客 post 中了解更多信息。
是否可以在 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") {
print("tapped")
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
print("long pressed")
})
请注意,在上面的代码中,每次长按后都会执行点击操作。你可以用一个简单的 Bool 来处理这个问题。
这是另一个不会在每次长按后触发常规点击操作的解决方案。
Button("Button") {
// No tap action here
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
print("Long-pressed")
})
.simultaneousGesture(TapGesture().onEnded {
print("Tapped")
})
我在这个博客中了解了这个 post:Supporting Both Tap and Long Press on a Button in SwiftUI
注意:对于 Catalyst 这可能无法按预期工作,您可以在上面的博客 post 中了解更多信息。