在HarmonyOS中怎么让父组件的手势优先触发?

在HarmonyOS ArkTS开发中,我在做一个嵌套组件交互时,发现子组件的点击事件会覆盖掉父组件的手势事件。想问一下有没有办法设置成“父组件优先识别手势”?我目前尝试了 .gesture() 和 .priorityGesture(),但不太清楚怎么配合 GestureMask 用才有效,有大佬能帮我解答一下吗?我这段代码可以帮我改一下么?

Column() {
  Text("点击我").fontSize(20)
    .gesture(TapGesture().onAction(() => {
      console.info("子组件触发");
    }))
}
.priorityGesture(
  TapGesture().onAction(() => {
    console.info("父组件触发");
  }),
  GestureMask.IgnoreInternal
)
阅读 442
1 个回答

据我所知,在HarmonyOS中,如果你想让父组件优先响应手势,需要使用 .priorityGesture() 并且将 GestureMask 设置为 GestureMask.IgnoreInternal。这样可以屏蔽掉子组件(比如 Text)的默认手势响应,让 Column 拦截手势事件:

.priorityGesture(
  TapGesture().onAction(() => {
    console.info("父组件优先响应");
  }),
  GestureMask.IgnoreInternal
)

这段配置会忽略掉子组件内置手势,适合做整卡点击响应、广告卡片跳转等业务场景。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题