onTapGesture 和 onLongPressGesture 没有响应

Posted

技术标签:

【中文标题】onTapGesture 和 onLongPressGesture 没有响应【英文标题】:onTapGesture and onLongPressGesture not responsive 【发布时间】:2020-03-07 09:50:53 【问题描述】:

我有一个 SwiftUI 按钮,最初我在操作区域内处理按钮按下,但现在我想更改按钮,以便我也可以长按它。为了做到这一点,我现在必须创建一个 onTapGesture 和 onLongPressGesture。在我的 Watch 上测试我的应用程序后,我意识到使用 onTapGesture 和 onLongpressGesture 按钮的响应速度较慢。我可以明显看到按钮被按下,但它有时只处理动作 1 和动作 2。有没有人有类似的经历,解决方法是什么?

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

                    .onTapGesture (count:1)
                      // action 1
                  

              .onLongPressGesture 
                // action 2
              
            

【问题讨论】:

我也遇到了同样的问题,哈哈...检查了下面的答案后,我仍然不知道如何解决它。 : - / 【参考方案1】:

不要使用按钮。

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

但没有“点击”!

【讨论】:

以上是关于onTapGesture 和 onLongPressGesture 没有响应的主要内容,如果未能解决你的问题,请参考以下文章

onTapGesture 禁用我的选取器和分段点击

NavigationLink onTapGesture 和导航未始终触发

SwiftUI onTapGesture 仅调用一次

onTapgesture 禁用 View SwiftUI 的按钮

ONTapGesture 不工作?

SwiftUI:将链接与 onTapGesture 一起使用