LongPressGesture
LongPressGesture is used to trigger a long press gesture, which requires one or more fingers with a minimum 500 ms hold-down time.
NOTE
This gesture is supported since API version 7. Updates will be marked with a superscript to indicate their earliest API version.
APIs
LongPressGesture(value?: { fingers?: number, repeat?: boolean, duration?: number })
Triggers a long press gesture. In components that support drag actions by default, such as <Text>, <TextInput>, <TextArea>, <Hyperlink>, <Image>, and <RichEditor>, the long press gesture may conflict with the drag action. If this occurs, they are handled as follows:
If the minimum duration of the long press gesture is less than 500 ms, the long press gesture receives a higher response priority than the drag action.
If the minimum duration of the long press gesture is greater than or equal to 500 ms, the drag action receives a higher response priority than the long press gesture.
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
fingers | number | No | Minimum number of fingers to trigger a long press gesture. The value ranges from 1 to 10. Default value: 1 NOTE If a finger moves more than 15 px after being pressed, the gesture recognition fails. |
repeat | boolean | No | Whether to continuously trigger the event callback. Default value: false |
duration | number | No | Minimum hold-down time, in ms. Default value: 500 NOTE If the value is less than or equal to 0, the default value 500 will be used. |
Events
Name | Description |
---|---|
onAction(event:(event?: GestureEvent) => void) | Invoked when a long press gesture is recognized. |
onActionEnd(event:(event?: GestureEvent) => void) | Invoked when the last finger is lifted after the long press gesture is recognized. |
onActionCancel(event: () => void) | Invoked when a tap cancellation event is received after the long press gesture is recognized. NOTE This event is triggered when the window loses focus. |
Example
// xxx.ets
@Entry
@Component
struct LongPressGestureExample {
@State count: number = 0
build() {
Column() {
Text('LongPress onAction:' + this.count).fontSize(28)
// Touch and hold the text with one finger to trigger the gesture event.
.gesture(
LongPressGesture({ repeat: true })
// When repeat is set to true, the event callback is triggered continuously when the gesture is detected. The triggering interval is specified by duration (500 ms by default).
.onAction((event?: GestureEvent) => {
if (event && event.repeat) {
this.count++
}
})
// Triggered when the long press gesture ends.
.onActionEnd(() => {
this.count = 0
})
)
}
.height(200)
.width(300)
.padding(20)
.border({ width: 3 })
.margin(30)
}
}