• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# LongPressGesture
2
3用于触发长按手势事件,触发长按手势的最少手指数为1,最短长按时间为500毫秒。
4
5>  **说明:**
6>
7>  从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9
10## 接口
11
12LongPressGesture(value?: { fingers?: number, repeat?: boolean, duration?: number })
13
14当组件默认支持可拖拽时,如Text、TextInput、TextArea、HyperLink、Image和RichEditor等组件。长按手势与拖拽会出现冲突,事件优先级如下:
15
16长按触发时间 < 500ms,长按事件优先拖拽事件响应。
17
18长按触发时间 >= 500ms,拖拽事件优先长按事件响应。
19
20**参数:**
21
22| 参数名称 | 参数类型 | 必填 | 参数描述 |
23| -------- | -------- | -------- | -------- |
24| fingers | number | 否 | 触发长按的最少手指数,最小为1指,&nbsp;最大取值为10指。<br/>默认值:1 <br/> **说明:** <br/>手指按下后若发生超过15px的移动,则判定当前长按手势识别失败。|
25| repeat | boolean | 否 | 是否连续触发事件回调。<br/>默认值:false |
26| duration | number | 否 | 触发长按的最短时间,单位为毫秒(ms)。<br/>默认值:500 <br/>**说明:** <br/>设置小于等于0时,按照默认值500处理。|
27
28
29## 事件
30
31| 名称 | 功能描述 |
32| -------- | -------- |
33| onAction(event:(event?:&nbsp;[GestureEvent](ts-gesture-settings.md#gestureevent对象说明))&nbsp;=&gt;&nbsp;void) | LongPress手势识别成功回调。 |
34| onActionEnd(event:(event?:&nbsp;[GestureEvent](ts-gesture-settings.md#gestureevent对象说明))&nbsp;=&gt;&nbsp;void) | LongPress手势识别成功,最后一根手指抬起后触发回调。 |
35| onActionCancel(event:&nbsp;()&nbsp;=&gt;&nbsp;void) | LongPress手势识别成功,接收到触摸取消事件触发回调。<br/>**说明:** <br/>在窗口失焦的时候会触发。 |
36
37
38## 示例
39
40```ts
41// xxx.ets
42@Entry
43@Component
44struct LongPressGestureExample {
45  @State count: number = 0
46
47  build() {
48    Column() {
49      Text('LongPress onAction:' + this.count).fontSize(28)
50        // 单指长按文本触发该手势事件
51        .gesture(
52        LongPressGesture({ repeat: true })
53          // 由于repeat设置为true,长按动作存在时会连续触发,触发间隔为duration(默认值500ms)
54          .onAction((event?: GestureEvent) => {
55            if (event && event.repeat) {
56              this.count++
57            }
58          })
59            // 长按动作一结束触发
60          .onActionEnd(() => {
61            this.count = 0
62          })
63        )
64    }
65    .height(200)
66    .width(300)
67    .padding(20)
68    .border({ width: 3 })
69    .margin(30)
70  }
71}
72```
73
74![zh-cn_image_0000001174264380](figures/zh-cn_image_0000001174264380.gif)
75