onTapGesture和onLongPressGesture没有响应

时间:2020-03-07 09:50:53

标签: swiftui

我有一个SwiftUI按钮,最初我在操作区域内处理按钮的按下,但是现在我想更改按钮,以便我也可以长按它。为此,我现在必须创建一个onTapGesture和onLongPressGesture。在Watch上测试我的应用程序后,我意识到按钮对onTapGesture和onLongpressGesture的响应较弱。我可以清楚地看到该按钮被按下,但是它有时仅处理操作1和操作2。是否有人有类似的经验,解决方法是什么?

 Button(action: {
                  // action 1
                }) {
                  Image(systemName: "checkmark")

                    .onTapGesture (count:1){
                      // action 1
                  }

              .onLongPressGesture {
                // action 2
              }
            }

1 个答案:

答案 0 :(得分:0)

不要使用按钮。

Image(systemName: "checkmark")
.onTapGesture {
    // action 1
}
.onLongPressGesture {
    // action 2
}

或在按钮上添加同时手势

Button(action: {
    print("tap")
}) {
    Image(systemName: "trash")
}.simultaneousGesture(LongPressGesture(minimumDuration: 1, maximumDistance: 10).onEnded({ (b) in
    print("long")
}))

警告,每次长事件之后都将点击“额外” ...

您可以玩手势面具,说

Button(action: {
    print("tap")
}) {
    Image(systemName: "trash")
}.simultaneousGesture(LongPressGesture().onChanged({ (b) in
    print("long change", b)
})
    .onEnded({ (b) in
    print("long end")
}), including: .gesture)

打印

long change true // on tap

// on long press
long change true
long end

但不能“点击”!