---
title: Gestures
framework: swiftui
role: collectionGroup
role_heading: API Collection
path: swiftui/gestures
---

# Gestures

Define interactions from taps, clicks, and swipes to fine-grained gestures.

## Overview

Overview Respond to gestures by adding gesture modifiers to your views. You can listen for taps, drags, pinches, and other standard gestures.

You can also compose custom gestures from individual gestures using the simultaneously(with:), sequenced(before:), or exclusively(before:) modifiers, or combine gestures with keyboard modifiers using the modifiers(_:) modifier. important: When you need a button, use a Button instance rather than a tap gesture. You can use any view as the button’s label, and the button type automatically provides many of the standard behaviors that users expect from a button, like accessibility labels and hints. For design guidance, see Gestures in the Human Interface Guidelines.

## Topics

### Essentials

- [Adding interactivity with gestures](swiftui/adding-interactivity-with-gestures.md)

### Recognizing tap gestures

- [onTapGesture(count:perform:)](swiftui/view/ontapgesture(count:perform:).md)
- [onTapGesture(count:coordinateSpace:perform:)](swiftui/view/ontapgesture(count:coordinatespace:perform:).md)
- [onTapGesture(count:coordinateSpace:inputKinds:perform:)](swiftui/view/ontapgesture(count:coordinatespace:inputkinds:perform:).md)
- [TapGesture](swiftui/tapgesture.md)
- [SpatialTapGesture](swiftui/spatialtapgesture.md)

### Recognizing long-press gestures

- [onLongPressGesture(minimumDuration:maximumDistance:perform:onPressingChanged:)](swiftui/view/onlongpressgesture(minimumduration:maximumdistance:perform:onpressingchanged:).md)
- [onLongPressGesture(minimumDuration:maximumDistance:inputKinds:perform:onPressingChanged:)](swiftui/view/onlongpressgesture(minimumduration:maximumdistance:inputkinds:perform:onpressingchanged:).md)
- [onLongPressGesture(minimumDuration:perform:onPressingChanged:)](swiftui/view/onlongpressgesture(minimumduration:perform:onpressingchanged:).md)
- [onLongTouchGesture(minimumDuration:perform:onTouchingChanged:)](swiftui/view/onlongtouchgesture(minimumduration:perform:ontouchingchanged:).md)
- [LongPressGesture](swiftui/longpressgesture.md)

### Recognizing spatial events

- [SpatialEventGesture](swiftui/spatialeventgesture.md)
- [SpatialEventCollection](swiftui/spatialeventcollection.md)
- [Chirality](swiftui/chirality.md)

### Recognizing gestures that change over time

- [gesture(_:)](swiftui/view/gesture(_:).md)
- [gesture(_:isEnabled:)](swiftui/view/gesture(_:isenabled:).md)
- [gesture(_:name:isEnabled:)](swiftui/view/gesture(_:name:isenabled:).md)
- [gesture(_:including:)](swiftui/view/gesture(_:including:).md)
- [DragGesture](swiftui/draggesture.md)
- [WindowDragGesture](swiftui/windowdraggesture.md)
- [MagnifyGesture](swiftui/magnifygesture.md)
- [RotateGesture](swiftui/rotategesture.md)
- [RotateGesture3D](swiftui/rotategesture3d.md)
- [GestureMask](swiftui/gesturemask.md)

### Recognizing Apple Pencil gestures

- [onPencilDoubleTap(perform:)](swiftui/view/onpencildoubletap(perform:).md)
- [onPencilSqueeze(perform:)](swiftui/view/onpencilsqueeze(perform:).md)
- [preferredPencilDoubleTapAction](swiftui/environmentvalues/preferredpencildoubletapaction.md)
- [preferredPencilSqueezeAction](swiftui/environmentvalues/preferredpencilsqueezeaction.md)
- [PencilPreferredAction](swiftui/pencilpreferredaction.md)
- [PencilDoubleTapGestureValue](swiftui/pencildoubletapgesturevalue.md)
- [PencilSqueezeGestureValue](swiftui/pencilsqueezegesturevalue.md)
- [PencilSqueezeGesturePhase](swiftui/pencilsqueezegesturephase.md)
- [PencilHoverPose](swiftui/pencilhoverpose.md)

### Combining gestures

- [Composing SwiftUI gestures](swiftui/composing-swiftui-gestures.md)
- [simultaneousGesture(_:including:)](swiftui/view/simultaneousgesture(_:including:).md)
- [simultaneousGesture(_:isEnabled:)](swiftui/view/simultaneousgesture(_:isenabled:).md)
- [simultaneousGesture(_:name:isEnabled:)](swiftui/view/simultaneousgesture(_:name:isenabled:).md)
- [SequenceGesture](swiftui/sequencegesture.md)
- [SimultaneousGesture](swiftui/simultaneousgesture.md)
- [ExclusiveGesture](swiftui/exclusivegesture.md)

### Customizing gestures

- [GestureInputKinds](swiftui/gestureinputkinds.md)

### Defining custom gestures

- [highPriorityGesture(_:including:)](swiftui/view/highprioritygesture(_:including:).md)
- [highPriorityGesture(_:isEnabled:)](swiftui/view/highprioritygesture(_:isenabled:).md)
- [highPriorityGesture(_:name:isEnabled:)](swiftui/view/highprioritygesture(_:name:isenabled:).md)
- [handGestureShortcut(_:isEnabled:)](swiftui/view/handgestureshortcut(_:isenabled:).md)
- [defersSystemGestures(on:)](swiftui/view/deferssystemgestures(on:).md)
- [Gesture](swiftui/gesture.md)
- [AnyGesture](swiftui/anygesture.md)
- [HandActivationBehavior](swiftui/handactivationbehavior.md)
- [HandGestureShortcut](swiftui/handgestureshortcut.md)

### Managing gesture state

- [GestureState](swiftui/gesturestate.md)
- [GestureStateGesture](swiftui/gesturestategesture.md)

### Handling activation events

- [allowsWindowActivationEvents(_:)](swiftui/view/allowswindowactivationevents(_:).md)

### Deprecated gestures

- [MagnificationGesture](swiftui/magnificationgesture.md)
- [RotationGesture](swiftui/rotationgesture.md)

## See Also

### Event handling

- [Input events](swiftui/input-events.md)
- [Clipboard](swiftui/clipboard.md)
- [Drag and drop](swiftui/drag-and-drop.md)
- [Focus](swiftui/focus.md)
- [System events](swiftui/system-events.md)
