【问题标题】:Button with double action (tap & long press) in SwiftUISwiftUI 中具有双重动作(点击和长按)的按钮
【发布时间】: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 {
  ....
}

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

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

【问题讨论】:

    标签: ios button swiftui long-press


    【解决方案1】:

    请检查这是否适合您:

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

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

    【讨论】:

    • 是的,它有效。正如你提到的,它可以用布尔值来处理。
    • 更多细节,在某些情况下;不需要布尔工作,因为主要操作没有被调用。就像你在长按动作中调出另一个视图一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 2023-02-03
    • 2022-01-03
    • 2017-10-25
    • 2021-06-04
    • 1970-01-01
    • 2020-06-07
    相关资源
    最近更新 更多