SwiftUI TapGesture onStart / TouchDown

dav*_*dev 4 macos swift swiftui

我在 SwiftUI for MacOS 中使用 TapGesture。TapGesture 仅在TouchInsideOut事件中,当再次释放按下时。我想在触地得分时调用一个动作,在结束手势时调用另一个动作。

onEndedTapGesture有可用的状态,但没有onStart

  MyView()
   .onTapGesture {
      //Action here only called after tap gesture is released
      NSLog("Test")
   }
Run Code Online (Sandbox Code Playgroud)

有没有机会检测触地和触地释放?

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

Asp*_*eri 8

如果通过纯 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")
        }
    )
Run Code Online (Sandbox Code Playgroud)