---
title: Gesture
framework: swiftui
role: symbol
role_heading: Protocol
path: swiftui/gesture
---

# Gesture

An instance that matches a sequence of events to a gesture, and returns a stream of values for each of its states.

## Declaration

```swift
@MainActor @preconcurrency protocol Gesture<Value>
```

## Overview

Overview Create custom gestures by declaring types that conform to the Gesture protocol.

## Topics

### Implementing a custom gesture

- [body](swiftui/gesture/body-swift.property.md)
- [Body](swiftui/gesture/body-swift.associatedtype.md)

### Performing the gesture

- [updating(_:body:)](swiftui/gesture/updating(_:body:).md)
- [onChanged(_:)](swiftui/gesture/onchanged(_:).md)
- [onEnded(_:)](swiftui/gesture/onended(_:).md)
- [Value](swiftui/gesture/value.md)

### Composing gestures

- [simultaneously(with:)](swiftui/gesture/simultaneously(with:).md)
- [sequenced(before:)](swiftui/gesture/sequenced(before:).md)
- [exclusively(before:)](swiftui/gesture/exclusively(before:).md)

### Adding modifier keys to a gesture

- [modifiers(_:)](swiftui/gesture/modifiers(_:).md)

### Transforming a gesture

- [map(_:)](swiftui/gesture/map(_:).md)

### Customizing gesture activation

- [handActivationBehavior(_:)](swiftui/gesture/handactivationbehavior(_:).md)

### Using a gesture with a RealityKit entity

- [targetedToAnyEntity()](swiftui/gesture/targetedtoanyentity().md)
- [targetedToEntity(_:)](swiftui/gesture/targetedtoentity(_:).md)
- [targetedToEntity(where:)](swiftui/gesture/targetedtoentity(where:).md)

## Relationships

### Conforming Types

- [AnyGesture](swiftui/anygesture.md)
- [DragGesture](swiftui/draggesture.md)
- [ExclusiveGesture](swiftui/exclusivegesture.md)
- [GestureStateGesture](swiftui/gesturestategesture.md)
- [LongPressGesture](swiftui/longpressgesture.md)
- [MagnificationGesture](swiftui/magnificationgesture.md)
- [MagnifyGesture](swiftui/magnifygesture.md)
- [RotateGesture](swiftui/rotategesture.md)
- [RotateGesture3D](swiftui/rotategesture3d.md)
- [RotationGesture](swiftui/rotationgesture.md)
- [SequenceGesture](swiftui/sequencegesture.md)
- [SimultaneousGesture](swiftui/simultaneousgesture.md)
- [SpatialEventGesture](swiftui/spatialeventgesture.md)
- [SpatialTapGesture](swiftui/spatialtapgesture.md)
- [TapGesture](swiftui/tapgesture.md)
- [WindowDragGesture](swiftui/windowdraggesture.md)

## See Also

### 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)
- [AnyGesture](swiftui/anygesture.md)
- [HandActivationBehavior](swiftui/handactivationbehavior.md)
- [HandGestureShortcut](swiftui/handgestureshortcut.md)
