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/> **说明:** 该接口仅支持部分组件使用,当前支持组件: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 144