HarmonyOS 如何从子组件控制手势分发

多层组价嵌套的情况下,如何控制手势,使手势只在目标控件上相应

组件A在最外层,绑定了onTouch方法。

组件B是A的子组件,绑定了onTouch方法。

组件C是B的子组件,绑定了onClick方法

目标:

点击C时,只响应C的onClick方法。A,B的onTouch方法不响应

触摸B时,只响应B的onTouch方法。A的onTouch方法不响应

触摸A时,正常响应A的onTouch

我们在使用hitTestBehavior属性配合时,没有能实现

下面是个嵌套demo,如果有好的方式,可以直接在这上面修改,谢谢!!!

@Entry 
@Component 
struct TestGesture { 
 build() { 
  Column() { 
   Column() { 
    Text("C") 
     .width("50%") 
     .height("50%") 
     .textAlign(TextAlign.Center) 
     .onClick(() => { 
      console.log("testC Click") 
     }) 
     .monopolizeEvents(true) 
     .backgroundColor(Color.Pink) 
   }.width("50%") 
   .height("50%") 
   .onTouch(() => { 
    console.log("testB Touch") 
   }).backgroundColor(Color.Orange) 
  }.width("100%") 
  .height("100%") 
  .onTouch(() => { 
   console.log("testA Touch") 
  }).backgroundColor(Color.Blue) 
 
 } 
}
HarmonyOS
2024-08-30 10:03:07
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

给C组件绑定个ontouch事件,分别在C和B的ontouch事件中都调用event.stopPropagation() 阻止事件冒泡可达到预期效果

可参考以下demo:

@Entry 
@Component 
struct TestGesture { 
 build() { 
  Column() { 
   Column() { 
    Text("C") 
     .width("50%") 
     .height("50%") 
     .textAlign(TextAlign.Center) 
     .onClick(() => { 
      console.log("testC Click") 
     }) 
     .onTouch((event)=>{ 
      event.stopPropagation() 
     }) 
     .monopolizeEvents(true) 
     .backgroundColor(Color.Pink) 
   }.width("50%") 
   .height("50%") 
   .onTouch((event) => { 
    console.log("testB Touch") 
    event.stopPropagation() 
   }).backgroundColor(Color.Orange) 
  }.width("100%") 
  .height("100%") 
  .onTouch(() => { 
   console.log("testA Touch") 
  }).backgroundColor(Color.Blue) 
 
 } 
}
分享
微博
QQ
微信
回复
2024-08-30 20:14:58
相关问题
HarmonyOS hap测试分发
1浏览 • 0回复 待解决
Web组件如何开启手势缩放
1622浏览 • 1回复 待解决
HarmonyOS如何控制组件的属性输出
375浏览 • 1回复 待解决
Image组件如何实现双指手势放大
2377浏览 • 1回复 待解决
HarmonyOS 按需分发问题
173浏览 • 1回复 待解决
事件分发冲突问题,如何解决?
388浏览 • 1回复 待解决
路由跳转如何通过scheme方式分发
820浏览 • 1回复 待解决
基于滚动组件手势处理
427浏览 • 1回复 待解决
HarmonyOS 包上架分发的API
0浏览 • 0回复 待解决
如何控制canvas组件的刷新呢
441浏览 • 1回复 待解决
求大佬告知如何上架分发
337浏览 • 1回复 待解决
HarmonyOS 如何禁用页面返回手势
219浏览 • 1回复 待解决