【HarmonyOS 6】在 UI 控件上滑动也会触发 onClick 点击事件?

【HarmonyOS 6】在 UI 控件上滑动也会触发 onClick 点击事件?
一、问题背景
最近忙了几个月的 HarmonyOS 6 AI 项目已提测。测试老铁们和领导们疯狂的使用,提出了很多奇奇怪怪的问题。
如题所述,项目中有个全屏提示遮罩,背景设置了点击事件。点击后隐藏遮罩。
测试代码如下:
领导们体验时发现,在 UI 控件上滑动也会触发 onClick 点击事件,关闭提示遮罩。
按照我的定位思路,因为只有 onclick 触发了隐藏操作,所以加了日志去复现,发现果然如此。就把 bug 划分到非问题栏里了。
后来项目内技术大佬发现,该问题可解,由此产生本文解答。
自我检讨,对于问题的敏感性和探索性有所降低,需要警惕!
二、解决方案:
因为 onClick 点击事件是组件被点击时触发的事件,因此滑动后抬起手指也会触发 onClick 事件。
不过从 API12,新增 distanceThreshold 参数,设置点击手势移动阈值。手指移动超出阈值时,点击手势识别失败。
比起传统 onclick 事件,多了一个参数,可以设置移动阈值 distanceThreshold。
当点击事件,设置了移动阈值 distanceThreshold。当设置的值小于等于 0 时,会被转化为默认值。默认值:2^31-1,单位:vp。
当手指的移动距离超出开发者预设的移动阈值时,点击识别失败。如果初始化为默认阈值时,手指移动超过组件热区范围,点击识别失败。
话说 API12 版本还是太权威了,去年居然没有注意到这些细节!!!
所以该问题如下修改测试代码即可:
onClick 事件中增加 distanceThreshold 参数,将阈值设置为一个极小值 1,当手指的移动距离超出预设的移动阈值时,点击识别失败,即不触发点击事件。
版权声明: 本文为 InfoQ 作者【GeorgeGcs】的原创文章。
原文链接:【http://xie.infoq.cn/article/f07959897279c0835a34bbf58】。文章转载请联系作者。







评论