harmony 鸿蒙点击事件

  • 2025-06-12
  • 浏览 (3)

点击事件

组件被点击时触发的事件。

说明:

从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 阻止默认事件。
说明:&nbsp;该接口仅支持部分组件使用,当前支持组件: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%')
  }
}

click

你可能感兴趣的鸿蒙文章

harmony 鸿蒙图像AI分析错误码

harmony 鸿蒙ArcButton

harmony 鸿蒙ArcSlider

harmony 鸿蒙Chip

harmony 鸿蒙ChipGroup

harmony 鸿蒙ComposeListItem

harmony 鸿蒙ComposeTitleBar

harmony 鸿蒙advanced.Counter

harmony 鸿蒙弹出框 (Dialog)

harmony 鸿蒙DialogV2

0  赞