首页 > 解决方案 > 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 {
  ....
}

但似乎没有任何效果。充其量我已经能够将长按手势附加到按钮的文本上,但即使在这种情况下,正常的点击也会停止工作。

任何好的建议将不胜感激。

标签: iosbuttonswiftuilong-press

解决方案


请检查这是否适合您:

Button("Button") {
    print("tapped")
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
    print("long pressed")
})

请注意,在上述代码中,每次长按后都会执行点击操作。你可以用一个简单的 Bool 来处理这个问题。


推荐阅读