在HarmonyOS ArkTS开发中,我在做一个嵌套组件交互时,发现子组件的点击事件会覆盖掉父组件的手势事件。想问一下有没有办法设置成“父组件优先识别手势”?我目前尝试了 .gesture() 和 .priorityGesture(),但不太清楚怎么配合 GestureMask 用才有效,有大佬能帮我解答一下吗?我这段代码可以帮我改一下么?
Column() {
Text("点击我").fontSize(20)
.gesture(TapGesture().onAction(() => {
console.info("子组件触发");
}))
}
.priorityGesture(
TapGesture().onAction(() => {
console.info("父组件触发");
}),
GestureMask.IgnoreInternal
)
据我所知,在HarmonyOS中,如果你想让父组件优先响应手势,需要使用 .priorityGesture() 并且将 GestureMask 设置为 GestureMask.IgnoreInternal。这样可以屏蔽掉子组件(比如 Text)的默认手势响应,让 Column 拦截手势事件:
这段配置会忽略掉子组件内置手势,适合做整卡点击响应、广告卡片跳转等业务场景。