TouchTestStrategy
- 1、前言
- 2、TouchTestStrategy简介
- 2.1、TouchTestStrategy枚举类型简介
- 2.2、TouchTestStrategy.DEFAULT效果
- 1.3、TouchTestStrategy.FORWARD_COMPETITION效果
- 2.3、TouchTestStrategy.FORWARD效果
- 3、参考资料
1、前言
本文根据官方文档自定义事件分发整理而来,读者也可以直接去官方文档阅读。
2、TouchTestStrategy简介
在HarmonyOS(70) ArkUI 事件分发拦截,事件冲突解决方案中简单讲解了事件分发的相关知识,主要对onTouch事件执行流做了说明。另外在ArkUI在处理触屏事件时,会在触屏事件触发前进行按压点和组件区域的触摸测试,来收集需要响应触屏事件的组件,再基于触摸测试结果分发相应的触屏事件。在父节点,开发者可以通过onChildTouchTest
决定如何让子节点去做触摸测试,影响子组件的触摸测试,最终影响后续的触屏事件分发。
如下图所示,我们通过onChildTouchTest
来控制事件响应,比如我们可以在上下两块红色区域滑动手指时带动中间的List组件滑动,也可以禁止List组件一起滑动。这都需要TouchTestStrategy来控制。
上图的代码如下:
// xxx.ets
import { promptAction } from '@kit.ArkUI';@Entry
@Component
struct ListExample {private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]@State text: string = 'Button'build() {Column() {List({ space: 12, initialIndex: 0 }) {ForEach(this.arr, (item: number) => {ListItem() {Text('Item '