These are the lesson notes for this day. Its build-along tutorial and flash cards have not been written yet.
The simple cases are .onTapGesture and .onLongPressGesture. For anything more, create a gesture value — DragGesture, MagnifyGesture, RotateGesture, LongPressGesture — and attach it with .gesture(). A gesture reports values through .onChanged and .onEnded. @GestureState holds a value that resets itself automatically when the gesture ends, which makes it ideal for a temporary drag offset. You combine gestures with .simultaneously(with:), .sequenced(before:) and .exclusively(before:).
One detail catches everyone: the area of a view that responds to touches is its visible content. Add .contentShape(Rectangle()) to make the whole frame respond.
Make a card you can drag. When released it springs back to where it started — unless it was dragged past a threshold, in which case it is dismissed.
After this lesson you should be able to answer@GestureState and @State for tracking a drag?