• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 点击事件
2
3组件被点击时触发的事件。
4
5>  **说明:**
6>
7>  从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9## onClick<sup>12+</sup>
10
11onClick(event: Callback\<ClickEvent>, distanceThreshold: number): T
12
13点击动作触发该回调。
14
15相较于原有onClick接口,新增distanceThreshold参数作为点击事件移动阈值,当手指的移动距离超出所设置的点击手势移动阈值时,点击手势识别失败。
16对于点击时手指移动距离没有限制的场景,建议采用原有接口。若要求点击时手指在一定区域范围内,建议使用该接口。
17
18**卡片能力:** 从API version 12开始,该接口支持在ArkTS卡片中使用。
19
20>  **说明:**
21>
22>  从API version 12开始,在使用卡片能力时,存在以下限制:
23>  1. 手指按下超过800ms后,不能触发点击事件。
24>  2. 手指按下之后移动位移超过20px,不能触发点击事件。
25
26**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
27
28**系统能力:** SystemCapability.ArkUI.ArkUI.Full
29
30**参数:**
31
32| 参数名 | 类型                              | 必填 | 说明                 |
33| ------ | --------------------------------- | ---- | -------------------- |
34| event  | [ClickEvent](#clickevent对象说明) | 是   | 获得[ClickEvent](#clickevent对象说明)对象。 |
35| distanceThreshold  | number | 是   | 点击事件移动阈值。当设置的值小于等于0时,会被转化为默认值。<br/>默认值:2^31-1<br/>**说明:**<br/>当手指的移动距离超出开发者预设的移动阈值时,点击识别失败。如果初始化为默认阈值时,手指移动超过组件热区范围,点击识别失败。 |
36
37## onClick
38
39onClick(event: (event: ClickEvent) => void): T
40
41点击动作触发该回调。
42
43**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
44
45>  **说明:**
46>
47>  从API version 9开始,在使用卡片能力时,存在以下限制:
48>  1. 手指按下超过800ms后,不能触发点击事件。
49>  2. 手指按下之后移动位移超过20px,不能触发点击事件。
50
51**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
52
53**系统能力:** SystemCapability.ArkUI.ArkUI.Full
54
55**参数:**
56
57| 参数名 | 类型                              | 必填 | 说明                 |
58| ------ | --------------------------------- | ---- | -------------------- |
59| event  | [ClickEvent](#clickevent对象说明) | 是   | 获得[ClickEvent](#clickevent对象说明)对象。 |
60
61**返回值:**
62
63| 类型 | 说明 |
64| -------- | -------- |
65| T | 返回当前组件。 |
66
67## ClickEvent对象说明
68
69继承于[BaseEvent](ts-gesture-customize-judge.md#baseevent对象说明)。
70
71**系统能力:** SystemCapability.ArkUI.ArkUI.Full
72
73| 名称            | 类型                                 | 描述                                                     |
74| ------------------- | ------------------------------------ | -------------------------------------------------------- |
75| x                   | number                               | 点击位置相对于被点击元素左边缘的X坐标。<br/>单位:vp<br/>**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。     |
76| y                   | number                               | 点击位置相对于被点击元素原始区域左上角的Y坐标。<br/>单位:vp<br/>**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。          |
77| target<sup>8+</sup> | [EventTarget](#eventtarget8对象说明) | 触发事件的元素对象显示区域。<br/>**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。  |
78| windowX<sup>10+</sup> | number                             | 点击位置相对于应用窗口左上角的X坐标。<br/>单位:vp<br/**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
79| windowY<sup>10+</sup> | number                             | 点击位置相对于应用窗口左上角的Y坐标。<br/>单位:vp<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
80| displayX<sup>10+</sup> | number                            | 点击位置相对于应用屏幕左上角的X坐标。<br/>单位:vp<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
81| displayY<sup>10+</sup> | number                            | 点击位置相对于应用屏幕左上角的Y坐标。<br/>单位:vp<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
82| screenX<sup>(deprecated)</sup> | number                    | 点击位置相对于应用窗口左上角的X坐标。<br>从API Version 10开始不再维护,建议使用windowX代替。 |
83| screenY<sup>(deprecated)</sup> | number                    | 点击位置相对于应用窗口左上角的Y坐标。<br>从API Version 10开始不再维护,建议使用windowY代替。 |
84| preventDefault<sup>12+</sup>      | () => void | 阻止默认事件。<br/> **说明:**&nbsp;该接口仅支持部分组件使用,当前支持组件:RichEditor、Hyperlink。暂不支持异步调用和提供Modifier接口。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
85| hand<sup>15+</sup> | [InteractionHand](./ts-gesture-settings.md#interactionhand枚举说明15) | 表示事件是由左手点击还是右手点击触发。<br />**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 |
86| targetDisplayId<sup>15+</sup> | number | 事件发生的屏幕ID。<br />**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 |
87
88## EventTarget<sup>8+</sup>对象说明
89
90**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
91
92**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
93
94**系统能力:** SystemCapability.ArkUI.ArkUI.Full
95
96| 名称   | 参数类型                      | 描述         |
97| ---- | ------------------------- | ---------- |
98| area | [Area](ts-types.md#area8) | 目标元素的区域信息。 |
99| id<sup>15+</sup> | [string](ts-universal-attributes-component-id.md) | 开发者设置的节点id。 |
100
101## 示例
102
103该示例通过按钮设置了点击事件,点击按钮可获取点击事件的相关参数。
104
105```ts
106// xxx.ets
107@Entry
108@Component
109struct ClickExample {
110  @State text: string = ''
111
112  build() {
113    Column() {
114      Row({ space: 20 }) {
115        Button('Click').width(100).height(40).id('click')
116          .onClick((event?: ClickEvent) => {
117            if(event){
118              this.text = 'Click Point:' + '\n  windowX:' + event.windowX + '\n  windowY:' + event.windowY
119                + '\n  x:' + event.x + '\n  y:' + event.y + '\ntarget:' + '\n  component globalPos:('
120                + event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')\n  width:'
121                + event.target.area.width + '\n  height:' + event.target.area.height + '\ntimestamp' + event.timestamp
122                + '\n id:'+ event.target.id + '\ntargetDisplayId:' + event.targetDisplayId;
123            }
124          }, 20)
125        Button('Click').width(200).height(50).id('click')
126          .onClick((event?: ClickEvent) => {
127            if(event){
128              this.text = 'Click Point:' + '\n  windowX:' + event.windowX + '\n  windowY:' + event.windowY
129                + '\n  x:' + event.x + '\n  y:' + event.y + '\ntarget:' + '\n  component globalPos:('
130                + event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')\n  width:'
131                + event.target.area.width + '\n  height:' + event.target.area.height + '\ntimestamp' + event.timestamp
132                + '\n id:'+ event.target.id + '\ntargetDisplayId:' + event.targetDisplayId;
133            }
134          }, 20)
135      }.margin(20)
136
137      Text(this.text).margin(15)
138    }.width('100%')
139  }
140}
141```
142
143![clilk](figures/click.gif)
144