文档管理中心

LongPressGesture

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

用于触发长按手势事件,触发长按手势的最少手指数为1,默认最短长按时间为500毫秒。可配置duration参数控制最短长按时长,适用于需要通过用户长按操作触发组件交互的场景。

说明
  • 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

  • 从API version 18开始,在优先响应系统双指长按手势的设备上,应用的双指长按手势不生效。

接口

LongPressGesture

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

LongPressGesture(value?: { fingers?: number; repeat?: boolean; duration?: number })

创建长按手势对象。继承自GestureInterface<T>。

当组件默认支持可拖拽时,如Text、TextInput、TextArea、Hyperlink、Image和RichEditor等组件,长按手势与拖拽会出现冲突,事件优先级如下:

当长按触发时间小于500毫秒时,系统优先响应长按事件而非拖拽事件。

当长按触发时间达到或超过500毫秒时,系统优先响应拖拽事件而非长按事件。

说明

当长按过程中触发应用窗口退后台/销毁,手指/手写笔输入源切换(手写笔输入源切换包括手写笔悬浮状态场景),屏幕旋转时,长按手势会被取消。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value { fingers?: number; repeat?: boolean; duration?: number } 否

设置长按手势参数。

- fingers:触发长按的最少手指数,最小值为1, 最大值为10。

默认值:1

- repeat:是否连续触发事件回调。true表示连续触发事件回调,false表示不连续触发事件回调。

默认值:false

- duration:触发长按的最短时间,单位为毫秒(ms)。

默认值:500

LongPressGesture15+

Phone15+PC/2in115+Tablet15+TV19+Wearable18+

LongPressGesture(options?: LongPressGestureHandlerOptions)

创建长按手势对象。与LongPressGesture相比,options参数新增了对isFingerCountLimited参数,表示是否检查触摸屏幕的手指数量。

当组件默认支持可拖拽时,如Text、TextInput、TextArea、Hyperlink、Image和RichEditor等组件,长按手势与拖拽会出现冲突,事件优先级如下:

当长按触发时间小于500毫秒时,系统优先响应长按事件而非拖拽事件。

当长按触发时间达到或超过500毫秒时,系统优先响应拖拽事件而非长按事件。

元服务API: 从API version 15开始,该接口支持在元服务中使用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
options LongPressGestureHandlerOptions 否 长按手势处理器配置参数。当需要自定义长按手势的处理器配置(如是否检查触摸屏幕的手指数量、手势识别参数等)时传入;不传入时,使用长按手势的默认处理器配置。

事件

说明
  • 在GestureEvent的fingerList元素中,手指索引编号与位置相对应,即fingerList[index]的id为index。对于先按下但未参与当前手势触发的手指,fingerList中对应的位置为空。建议优先使用fingerInfos。

  • 长按手势触发后,GestureEvent中fingerList和fingerInfos的信息仅在有手指按下时才会更新,手指抬起时不会更新。

onAction

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

onAction(event: (event: GestureEvent) => void)

设置长按手势识别成功回调。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
event (event: GestureEvent) => void 是 长按手势识别成功回调函数,用于在长按手势识别成功时接收GestureEvent手势事件信息。

onActionEnd

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

onActionEnd(event: (event: GestureEvent) => void)

设置长按手势结束回调。长按手势识别成功后,最后一根手指抬起时触发回调。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
event (event: GestureEvent) => void 是 长按手势结束回调函数,用于在长按手势识别成功后最后一根手指抬起时接收GestureEvent手势事件信息。

onActionCancel

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

onActionCancel(event: () => void)

设置长按手势取消回调。长按手势识别成功后,接收到触摸取消事件时触发回调。不返回手势事件信息。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
event () => void 是 长按手势取消回调函数。

onActionCancel18+

Phone18+PC/2in118+Tablet18+TV19+Wearable18+

onActionCancel(event: Callback<GestureEvent>)

设置长按手势取消回调。长按手势识别成功后,接收到触摸取消事件时触发回调。返回手势事件信息。

元服务API: 从API version 18开始,该接口支持在元服务中使用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
event Callback<GestureEvent> 是 长按手势取消回调函数,用于在长按手势识别成功后接收到触摸取消事件时接收GestureEvent手势事件信息。

示例

该示例通过LongPressGesture实现了长按手势的识别。从API version 22开始,支持通过LongPressGestureHandlerOptions的allowableMovement属性设置识别手势的最大移动距离。

收起
自动换行
深色代码主题
复制
  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct LongPressGestureExample {
  5. @State count: number = 0;
  6. build() {
  7. Column() {
  8. Text('LongPress onAction:' + this.count).fontSize(28)
  9. // 单指长按文本触发该手势事件。
  10. .gesture(
  11. // 设置长按手势识别器识别的手势的最大移动距离为200px。
  12. LongPressGesture({ repeat: true, allowableMovement: 200 })
  13. // 由于repeat设置为true,长按动作存在时会连续触发,触发间隔为duration(默认值500ms)。
  14. .onAction((event: GestureEvent) => {
  15. if (event && event.repeat) {
  16. this.count++;
  17. }
  18. })
  19. // 长按动作一结束触发。
  20. .onActionEnd(() => {
  21. this.count = 0;
  22. })
  23. )
  24. }
  25. .height(200)
  26. .width(300)
  27. .padding(20)
  28. .border({ width: 3 })
  29. .margin(30)
  30. }
  31. }