1e41f4b71Sopenharmony_ci# Gesture Modifier
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ciWith the gesture modifier, you can dynamically set gestures bound to components, complete with the **if/else** syntax.
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci>  **NOTE**
6e41f4b71Sopenharmony_ci>
7e41f4b71Sopenharmony_ci>  This feature is supported since API version 12. Updates will be marked with a superscript to indicate their earliest API version.
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci## gestureModifier
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_cigestureModifier(modifier: GestureModifier)
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ciCreates a gesture modifier.
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ArkUI.ArkUI.Full
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci**Parameters**
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci| Name  | Type                 | Mandatory| Description                                                        |
22e41f4b71Sopenharmony_ci| -------- | --------------------- | ---- | ------------------------------------------------------------ |
23e41f4b71Sopenharmony_ci| modifier | [GestureModifier](#gesturemodifier-1) | Yes  | Modifier for dynamically setting gestures bound to the current component. The **if/else** syntax is supported.<br>**modifier**: gesture modifier. You need a custom class to implement the **GestureModifier** API.|
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci## GestureModifier
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ciYou need a custom class to implement the **GestureModifier** API.
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci### applyGesture
30e41f4b71Sopenharmony_ciapplyGesture(event: UIGestureEvent): void
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ciBinds a gesture to this component.
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ciYou can customize this API as required. The **if/else** syntax is supported.
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_ci**Parameters**
39e41f4b71Sopenharmony_ci
40e41f4b71Sopenharmony_ci| Name           | Type                                       | Description                                      |
41e41f4b71Sopenharmony_ci| ------------- | ----------------------------------------  | ---------------------------------------- |
42e41f4b71Sopenharmony_ci| event        | [UIGestureEvent](./ts-uigestureevent.md#uigestureevent) |  **UIGestureEvent** object, which is used to set the gesture to be bound to the component.     |
43e41f4b71Sopenharmony_ci
44e41f4b71Sopenharmony_ci## Example
45e41f4b71Sopenharmony_ci
46e41f4b71Sopenharmony_ci```ts
47e41f4b71Sopenharmony_ci// xxx.ets
48e41f4b71Sopenharmony_ciclass MyButtonModifier implements GestureModifier {
49e41f4b71Sopenharmony_ci  supportDoubleTap: boolean = true
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci  applyGesture(event: UIGestureEvent): void {
52e41f4b71Sopenharmony_ci    if (this.supportDoubleTap) {
53e41f4b71Sopenharmony_ci      event.addGesture(
54e41f4b71Sopenharmony_ci        new TapGestureHandler({ count: 2, fingers: 1 })
55e41f4b71Sopenharmony_ci          .tag("aaa")
56e41f4b71Sopenharmony_ci          .onAction((event: GestureEvent) => {
57e41f4b71Sopenharmony_ci            console.log("button tap ")
58e41f4b71Sopenharmony_ci          })
59e41f4b71Sopenharmony_ci      )
60e41f4b71Sopenharmony_ci    } else {
61e41f4b71Sopenharmony_ci      event.addGesture(
62e41f4b71Sopenharmony_ci        new PanGestureHandler()
63e41f4b71Sopenharmony_ci          .onActionStart(()=>{
64e41f4b71Sopenharmony_ci            console.log("Pan start");
65e41f4b71Sopenharmony_ci          })
66e41f4b71Sopenharmony_ci      )
67e41f4b71Sopenharmony_ci    }
68e41f4b71Sopenharmony_ci  }
69e41f4b71Sopenharmony_ci}
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci@Entry
72e41f4b71Sopenharmony_ci@Component
73e41f4b71Sopenharmony_cistruct Index {
74e41f4b71Sopenharmony_ci  @State modifier: MyButtonModifier = new MyButtonModifier()
75e41f4b71Sopenharmony_ci
76e41f4b71Sopenharmony_ci  build() {
77e41f4b71Sopenharmony_ci    Row() {
78e41f4b71Sopenharmony_ci      Column() {
79e41f4b71Sopenharmony_ci        Column()
80e41f4b71Sopenharmony_ci          .gestureModifier(this.modifier)
81e41f4b71Sopenharmony_ci          .width(500)
82e41f4b71Sopenharmony_ci          .height(500)
83e41f4b71Sopenharmony_ci          .backgroundColor(Color.Blue)
84e41f4b71Sopenharmony_ci      }
85e41f4b71Sopenharmony_ci      .width('100%')
86e41f4b71Sopenharmony_ci    }
87e41f4b71Sopenharmony_ci    .height('100%')
88e41f4b71Sopenharmony_ci  }
89e41f4b71Sopenharmony_ci}
90e41f4b71Sopenharmony_ci```
91e41f4b71Sopenharmony_ci<!--no_check-->