Issue with Long Press and Drag Gesture Not Ending When Another Finger Swipes on watchOS

I am developing a watchOS app with a tab view, and inside one of the tabs, I have a 2x2 collection view layout. Each collection item contains a view that handles:

Tap Gesture (.onTapGesture) → Executes an action immediately.

Long Press Gesture (LongPressGesture) → Triggers an update when long press starts and again when it ends.

Drag Gesture (DragGesture) → Updates the position while dragging and resets values when the gesture ends. Issue: Most of the time, the gestures work correctly, but if another finger swipes on the screen while a long press is active, sometimes the onEnded event does not trigger, leaving the button in an active state.

Observations: The onTapGesture executes normally without issues. The LongPressGesture starts as expected, but if another finger interacts with the screen, the onEnded of the drag gesture does not always trigger. This results in the button remaining visually or functionally "pressed" until another interaction occurs.

Has anyone encountered similar behavior in watchOS? How can I ensure that long press and drag gestures always complete even when another finger swipes on the screen?

Thanks in advance!

SwiftUI only invokes the onEnded(_:) when the gesture succeeds, as mentioned in Update permanent state when a gesture ends.

Does GestureState help? I'd think that you can create a GestureState variable in your view with an initial value, update it in the gesture's updating(_:body:), and detect if the gesture is canceled or reset by detecting if the GestureState variable is back to its initial state.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

Issue with Long Press and Drag Gesture Not Ending When Another Finger Swipes on watchOS
 
 
Q