HarmonyOS 鸿蒙Next onClick和onTouch如何解决共存问题

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next onClick和onTouch如何解决共存问题

组件如何可以判断长按超过2秒执行onTouch事件,不超过2秒执行onClick事件, 

2 回复
import { hilog } from '[@kit](/user/kit).PerformanceAnalysisKit'

[@Entry](/user/Entry)
[@Component](/user/Component)
struct TestPage {
private touchTime: number = 0

build() {
Row() {
Column()
.width(100)
.height(100)
.backgroundColor(Color.Brown)
.onTouch((event) => {
if (event.type == TouchType.Down) {
this.touchTime = event.timestamp
} else if (event.type == TouchType.Move) {
if (event.timestamp - this.touchTime > 2000000000) {
hilog.debug(0x000000, 'rainrain', 'touch')
}
} else if (event.type == TouchType.Up) {
if (event.timestamp - this.touchTime <= 2000000000) {
hilog.debug(0x000000, 'rainrain', 'click')
}
}
})
}
}
}

这样???

更多关于HarmonyOS 鸿蒙Next onClick和onTouch如何解决共存问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,处理onClickonTouch事件的共存问题,关键在于合理区分和协调这两个事件的触发逻辑。

onClick事件通常用于处理用户点击按钮或其他可点击组件的行为。而onTouch事件则更为底层,可以捕捉到用户在屏幕上的各种触摸动作,包括按下、移动、抬起等。

要实现两者的共存,可以在组件的触摸监听器中,根据触摸动作的类型(如ACTION_DOWN、ACTION_UP等)来判断是否触发点击事件。例如,如果触摸动作以ACTION_DOWN开始并以ACTION_UP结束,且这两个动作发生在同一位置附近,则可以认为这是一个点击事件,此时可以手动触发onClick逻辑。

同时,在onTouch事件的处理中,如果识别到的是滑动、长按等其他非点击动作,则应该阻止这些动作被解释为点击事件,以避免与onClick事件产生冲突。

此外,还可以通过设置触摸监听器的返回值为truefalse来控制事件是否继续向下传递。如果返回true,则表示事件已经被处理,不再继续传递;如果返回false,则事件会继续传递给下一个监听器,包括可能的onClick监听器。

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

回到顶部