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-->