HarmonyOS 鸿蒙Next ListContainer 滚动时无法再接收到Touch事件?

HarmonyOS 鸿蒙Next ListContainer 滚动时无法再接收到Touch事件? 今天在弄ListContainer下的item缩放和拖动时发现, 有时会卡住无效,经过测试是ListContainer在滚动时Touch事件不管是ListContainer还是下面的item都无法再接收到Touch事件。我就想自己重写下ListContainer的Touch事件,发现没有像android下有个onInterceptTouchEven方法可用。找半天也没发现有类式的方法。

有什么解决办法吗?想过用MultimodalEventHandle,只是这样会很麻烦。顺便滚动时连ListContainer的父容器也接收不到Touch事件。


更多关于HarmonyOS 鸿蒙Next ListContainer 滚动时无法再接收到Touch事件?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复
实测滚动事件和touch事件都在触发

![cke_137.png](https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/122/510/905/0350086000122510905.20220706084037.36655323921287180725273176943792:50001231000000:2800:2954121BBB6CD7032E66E6910B692C5904B435C0B4E026D785CEB582CDB65051.png)

更多关于HarmonyOS 鸿蒙Next ListContainer 滚动时无法再接收到Touch事件?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我试了下,发现是个bug,你试下不监听Scrolled事件。touch事件就接收不到了。

又试了下,有收到touch事件,只是非常少。不像同时设定srolled时会收到很多。

我的问题应该可以解决了,同时设定scorll因为我有缩放求,多个点拖动这时ListContainer没有滚动的话Touch也接收不到了。但是用ultimodalEventHandle.registerStandardizedEventHandle后,ListContainer的Touch都能正常收到。。晚上再试试能不能解决问题。

a.JPG

这是同时监听touch事件和Scrolled事件时,滑动ListContainer.可以看到事件都正常输出。

发现这是个BUG,只有当同时设定scrollListener和touchListener,Touch在滑动ListContainer时会正常收到。只设定touchListener时,滑动时没有正常执行。

刚又试了下,touch事件有收到,只是会变得非常少,同时设定scroll的话,log就会打印出来很多的touch事件。这个应该就是bug。

欢迎开发小伙伴们进来帮帮楼主

小吧主,你把我另一个截图给删除了,和上面那截图是不一样的,是只设定一个Touch时的log输出啊。

针对“HarmonyOS 鸿蒙Next ListContainer 滚动时无法再接收到Touch事件”的问题,可能的原因及解决方案如下:

在HarmonyOS开发中,ListContainer组件在滚动时可能会由于事件分发机制导致Touch事件被拦截或消费,从而无法继续传递给其他监听器。这通常与事件冒泡和捕获机制有关。

  1. 检查事件监听器: 确认是否在ListContainer或其子组件上设置了多个Touch事件监听器。如果存在多个监听器,检查是否有监听器在处理事件后未正确返回false以允许事件继续传播。

  2. 事件拦截与消费: 检查ListContainer的滚动实现是否在某处拦截并消费了Touch事件。如果是自定义滚动逻辑,确保在不需要完全消费事件时能够正确传递事件。

  3. 组件层级与布局: 考虑ListContainer的层级结构是否影响了事件的传递。有时,其他覆盖在ListContainer上的组件可能会拦截Touch事件。

  4. 系统Bug或限制: 如果上述检查均无果,可能是HarmonyOS系统本身的Bug或特定版本的限制。此时,可以尝试查阅最新的HarmonyOS开发文档或社区论坛,看是否有其他开发者遇到并解决了类似问题。

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

回到顶部