harmony 鸿蒙点击事件
点击事件
组件被点击时触发的事件。
说明:
从API version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
事件分发流程可参考多层级手势事件。
onClick12+
onClick(event: Callback<ClickEvent>, distanceThreshold: number): T
点击动作触发该回调。
当触发点击事件的设备类型为键盘或手柄时,事件的SourceTool值为Unknown。
新增distanceThreshold参数,设置点击手势移动阈值。手指移动超出阈值时,点击手势识别失败。 对于无手指移动距离限制的点击场景,建议使用原有接口。若需限制点击时手指移动范围,建议使用该接口。
卡片能力: 从API version 12开始,该接口支持在ArkTS卡片中使用。
说明:
从API version 12开始,在使用卡片能力时,存在以下限制: 1. 如果手指按下超过800ms,不能触发点击事件。 2. 如果手指按下之后移动位移超过20px,不能触发点击事件。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
event | ClickEvent | 是 | 获得ClickEvent对象。 |
distanceThreshold | number | 是 | 点击事件移动阈值。当设置的值小于等于0时,会被转化为默认值。 默认值:2^31-1 单位:vp 说明: 当手指的移动距离超出开发者预设的移动阈值时,点击识别失败。如果初始化为默认阈值时,手指移动超过组件热区范围,点击识别失败。 |
返回值:
类型 | 说明 |
---|---|
T | 返回当前组件。 |
onClick
onClick(event: (event: ClickEvent) => void): T
点击动作触发该回调。
触发点击事件的设备类型为键盘或手柄时,事件的SourceTool值为Unknown。
卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。
说明:
从API version 9开始,在使用卡片能力时,存在以下限制: 1. 如果手指按下超过800ms,不能触发点击事件。 2. 如果手指按下之后移动位移超过20px,不能触发点击事件。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
event | ClickEvent | 是 | 获得ClickEvent对象。 |
返回值:
类型 | 说明 |
---|---|
T | 返回当前组件。 |
ClickEvent对象说明
继承于BaseEvent。
系统能力: SystemCapability.ArkUI.ArkUI.Full
名称 | 类型 | 描述 |
---|---|---|
x | number | 点击位置相对于被点击元素左边缘的X坐标。 单位:vp 卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。 原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。 |
y | number | 点击位置相对于被点击元素原始区域左上角的Y坐标。 单位:vp 卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。 原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。 |
target8+ | EventTarget | 触发事件的元素对象显示区域。 卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。 原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。 |
windowX10+ | number | 点击位置相对于应用窗口左上角的X坐标。 单位:vp 原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。 |
windowY10+ | number | 点击位置相对于应用窗口左上角的Y坐标。 单位:vp 原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。 |
displayX10+ | number | 点击位置相对于应用屏幕左上角的X坐标。 单位:vp 原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。 |
displayY10+ | number | 点击位置相对于应用屏幕左上角的Y坐标。 单位:vp 原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。 |
screenX(deprecated) | number | 点击位置相对于应用窗口左上角的X坐标。 单位:vp 从API version 10开始不再维护,建议使用windowX代替。 |
screenY(deprecated) | number | 点击位置相对于应用窗口左上角的Y坐标。 单位:vp 从API version 10开始不再维护,建议使用windowY代替。 |
preventDefault12+ | () => void | 阻止默认事件。 说明: 该接口仅支持部分组件使用,当前支持组件:RichEditor、Hyperlink,不支持的组件使用时会抛出异常。暂不支持异步调用和提供Modifier接口。 原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。 |
targetDisplayId15+ | number | 事件发生的屏幕ID。 原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。 |
hand15+ | InteractionHand | 表示事件是由左手点击还是右手点击触发。 原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。 |
错误码:
以下错误码的详细介绍请参见交互事件错误码。
错误码ID | 错误信息 |
---|---|
100017 | Component does not support prevent function. |
EventTarget8+对象说明
卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
名称 | 参数类型 | 描述 |
---|---|---|
area | Area | 目标元素的区域信息。 |
id15+ | string | 开发者设置的节点id。默认值:undefined |
示例
该示例通过按钮设置了点击事件,点击按钮可获取点击事件的相关参数。
// xxx.ets
@Entry
@Component
struct ClickExample {
@State text: string = ''
build() {
Column() {
Row({ space: 20 }) {
Button('Click').width(100).height(40).id('click')
.onClick((event?: ClickEvent) => {
if(event){
this.text = 'Click Point:' + '\n windowX:' + event.windowX + '\n windowY:' + event.windowY
+ '\n x:' + event.x + '\n y:' + event.y + '\ntarget:' + '\n component globalPos:('
+ event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')\n width:'
+ event.target.area.width + '\n height:' + event.target.area.height + '\ntimestamp' + event.timestamp
+ '\n id:'+ event.target.id + '\ntargetDisplayId:' + event.targetDisplayId;
}
}, 20)
Button('Click').width(200).height(50).id('click')
.onClick((event?: ClickEvent) => {
if(event){
this.text = 'Click Point:' + '\n windowX:' + event.windowX + '\n windowY:' + event.windowY
+ '\n x:' + event.x + '\n y:' + event.y + '\ntarget:' + '\n component globalPos:('
+ event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')\n width:'
+ event.target.area.width + '\n height:' + event.target.area.height + '\ntimestamp' + event.timestamp
+ '\n id:'+ event.target.id + '\ntargetDisplayId:' + event.targetDisplayId;
}
}, 20)
}.margin(20)
Text(this.text).margin(15)
}.width('100%')
}
}
你可能感兴趣的鸿蒙文章
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦