SwiftUI TapGesture onStart / TouchDown

Posted

技术标签:

【中文标题】SwiftUI TapGesture onStart / TouchDown【英文标题】: 【发布时间】:2020-05-12 12:33:25 【问题描述】:

我在 MacOS 的 SwiftUI 中使用 TapGesture。 TapGesture 仅在 TouchInsideOut 事件中被识别,当再次释放新闻时。我想在触地时调用一个动作,在结束手势时调用另一个动作。

有一个可用于 TapGesture 的 onEnded 状态,但没有 onStart

  MyView()
   .onTapGesture 
      //Action here only called after tap gesture is released
      NSLog("Test")
   

是否有机会检测到触摸下降和触摸释放?

我也尝试使用LongPressGesture,但无法弄清楚。

【问题讨论】:

【参考方案1】:

如果使用纯 SwiftUI,那么现在只能间接使用。

这是一种方法。使用 Xcode 11.4 测试。

注意:下面的minimumDistance: 0.0 很重要!!

MyView()
    .gesture(DragGesture(minimumDistance: 0.0, coordinateSpace: .global)
        .onChanged  _ in
            print(">> touch down") // additional conditions might be here
        
        .onEnded  _ in
            print("<< touch up")
        
    )

【讨论】:

有效!!谢谢。我尝试了同样的方法,但使用了 LongPress,但那里的 onEnded 被称为错误。谢谢!!! 我也在使用 onHover 这个视图,但看起来两者没有一起工作。当 DragGesture 在视图上时,我可以调用任何函数吗?拖动?目前我在开始拖动时设置一个状态,然后允许我的悬停。但是没有调用悬停。我需要检查是否在拖动过程中将鼠标悬停在视图上。 你知道当视图接收到这个 DragGesture 时我可以调用的函数吗? @davidev,有几个类似的帖子。例如this 和this 非常感谢。你真是个专家。我在这里用你的答案想通了:***.com/questions/58900316/…

以上是关于SwiftUI TapGesture onStart / TouchDown的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 点击手势阻止列表中的项目删除操作

TapGesture 在 Xcode 11.0 Beta 中不起作用

SwiftUI @State 变量未更新

在 SwiftUI 中的表单上捕捉点击手势

SwiftUI - 为啥 contentShape 会阻止单击叠加层?

如何在 SwiftUI 中点击手势时放大缩小按钮动画?