通用事件
点击
onClick(event: Callback<ClickEvent>, distanceThreshold: number): T
|
触摸
onTouch(event: (event: TouchEvent) => void): T
getHistoricalPoints(): Array<HistoricalPoint>
|
挂载卸载
组件从组件树上挂载、卸载时触发的事件。
onAttach(callback: Callback<void>): T
onDetach(callback: Callback<void>): T
onAppear(event: () => void): T
onDisAppear(event: () => void): T
|
拖拽
可通过将draggable属性设置为true达成拖拽功能的组件有:
- 默认支持拖出能力的组件(可从组件上拖出数据):Search、TextInput、TextArea、RichEditor、Text、Image、Hyperlink
- 默认支持拖入能力的组件(目标组件可响应拖入数据):Search、TextInput、TextArea、Video
其他组件需要开发者将draggable属性设置为true,并在onDragStart等接口中实现数据传输相关内容,才能正确处理拖拽
onDragStart(event: (event: DragEvent, extraParams?: string) => CustomBuilder | DragItemInfo)
onDragEnter(event: (event: DragEvent, extraParams?: string) => void)
onDragMove(event: (event: DragEvent, extraParams?: string) => void)
onDragLeave(event: (event: DragEvent, extraParams?: string) => void)
onDrop(event: (event: DragEvent, extraParams?: string) => void)
onDragEnd(event: (event: DragEvent, extraParams?: string) => void)
onPreDrag(event: (preDragStatus: PreDragStatus) => void)
|
按键
按键事件指组件与键盘、遥控器等按键设备交互时触发的事件
onKeyEvent(event: (event: KeyEvent) => void): T
onKeyPreIme(event: Callback<KeyEvent, boolean>): T
|
焦点
焦点事件指页面焦点在可获焦组件间移动时触发的事件
onFocus(event: () => void)
onBlur(event:() => void)
|
鼠标
在鼠标的单个动作触发多个事件时,事件的顺序是固定的,鼠标事件默认透传
onMouse(event: (event: MouseEvent) => void)
|
悬浮
鼠标滑动,或者手写笔在屏幕上悬浮移动扫过组件时触发
onHover(event: (isHover: boolean, event: HoverEvent) => void): T
|
无障碍悬浮
开启无障碍模式后,Touch事件会转换为无障碍悬浮事件
onAccessibilityHover(callback: AccessibilityCallback): T
type AccessibilityCallback = (isHover: boolean, event: AccessibilityHoverEvent) => void
|
组件区域变化
组件区域变化事件指组件显示的尺寸、位置等发生变化时触发的事件
onAreaChange(event: (oldValue: Area, newValue: Area) => void): T
|
组件尺寸变化
onSizeChange(event: SizeChangeCallback): T
SizeChangeCallback = (oldValue: SizeOptions, newValue: SizeOptions) => void
|
组件可见区域变化
- 组件在屏幕中的显示区域面积变化时触发的事件
- 提供了判断组件是否完全或部分显示在屏幕中的能力,适用于广告曝光埋点之类的场景
onVisibleAreaChange(ratios: Array<number>, event: (isVisible: boolean, currentRatio: number) => void): T
|
组件快捷键
- 设置组合键的同时可以设置自定义事件,组合键按下时,触发该自定义事件
- 若没有设置自定义事件,则组合键行为与click行为一致
keyboardShortcut(value: string | FunctionKey, keys: Array<ModifierKey>, action?: () => void): T
|
系统已存在的按键事件
方向键、Shift + 方向键 | 输入框组件 | 移动光标 | 输入法
方向键、Shift + 方向键 | 通用组件 | 系统处于走焦状态时,用于方向走焦 | 系统按键
TAB、Shift + TAB | 通用组件 | 触发进入走焦状态/走焦 | 系统按键
自定义事件分发
- ArkUI在处理触屏事件时,会在触屏事件触发前进行按压点和组件区域的触摸测试,来收集需要响应触屏事件的组件,再基于触摸测试结果分发相应的触屏事件
- 可以通过onChildTouchTest决定如何让子节点去做触摸测试,影响子组件的触摸测试,最终影响后续的触屏事件分发
onChildTouchTest(event: (value: Array<TouchTestInfo>) => TouchResult): T
|
自定义事件拦截
- 为组件提供自定义的事件拦截能力
- 可根据事件在控件上按下时发生的位置,输入源等事件信息决定控件上的HitTestMode属性
onTouchIntercept(callback: Callback<TouchEvent, HitTestMode>)
|