HarmonyOS 鸿蒙Next canvas注册了onTouch监听,按下后,canvas所在的组件不存在了,onTouch还会继续分发事件

HarmonyOS 鸿蒙Next canvas注册了onTouch监听,按下后,canvas所在的组件不存在了,onTouch还会继续分发事件

struct drawLayout {
build() {
Canvas(this.context)
.width(‘100%’)
.height(‘100%’)
.onTouch((event) => {
if (event) {
console.log("event.type: " + event.type)
}
})
}

canvas注册了onTouch监听,按下后,长按触发拉起另外一个组件,当前canvas所在的组件被移除,但onTouch还会继续分发事件。

如何才能主动解除onTouch的回调?


更多关于HarmonyOS 鸿蒙Next canvas注册了onTouch监听,按下后,canvas所在的组件不存在了,onTouch还会继续分发事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
方便看下长按拉起的组件的代码吗?看下怎么写的才好复现。

更多关于HarmonyOS 鸿蒙Next canvas注册了onTouch监听,按下后,canvas所在的组件不存在了,onTouch还会继续分发事件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,如果你在使用Next canvas并注册了onTouch监听,发现按下后canvas所在的组件不存在了,但onTouch事件仍然继续分发,这通常是由于事件分发机制导致的。在事件分发过程中,即使目标组件(如canvas)已被移除或不再存在,事件仍可能沿着事件链继续传递。

这种情况可能涉及事件捕获、目标处理以及冒泡阶段。如果canvas组件在事件处理过程中被销毁,系统可能无法立即中断事件分发,导致事件继续向上冒泡。

为了解决这个问题,你可以尝试以下几种方法:

  1. 确保组件存在性:在onTouch事件处理中,首先检查canvas组件是否存在,如果不存在,则直接返回false,中断事件分发。

  2. 移除监听器:在销毁canvas组件前,确保移除其上的onTouch监听器,以避免无效的事件分发。

  3. 事件消费:在onTouch事件处理中,尽量消费掉所有需要处理的事件,避免事件继续向上冒泡。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部