HarmonyOS 鸿蒙Next opacity 配置后点击事件表现和其他平台不太相同
HarmonyOS 鸿蒙Next opacity 配置后点击事件表现和其他平台不太相同
在通过 onTouchIntercept 设置之后能在第一层帮助点击事件透传,但是元素内的其他元素还是会拦截掉 onClick 事件
某些详情界面存在导航条的展示,这些导航条在页面滑动到顶部时需要隐藏,我们会将 opacity配置为 0。但此时,用户对于顶部元素的点击还是会被导航条拦截,导致点击无法正确的被处理
更多关于HarmonyOS 鸿蒙Next opacity 配置后点击事件表现和其他平台不太相同的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
事件透传参考demo:
@Entry
@Component
struct StackExample {
build() {
Stack({ alignContent: Alignment.Bottom }) {
Text('A')
.width('90%')
.height('100%')
.backgroundColor(0xd2cab3)
.align(Alignment.Top)
.onClick(() => {
console.log('11111')
})
Text('B')
.width('70%')
.height('60%')
.backgroundColor(0xc1cbac)
.align(Alignment.Top)
.hitTestBehavior(HitTestMode.None)
.onClick(() => {
console.log('1111122222')
})
}.width('100%').height(150).margin({ top: 5 })
}
}
HitTestMode.None自身不响应触摸测试,不会阻塞子节点和兄弟节点的触摸测试。
当前鸿蒙的设计规格就是这样。
opacity设置为0 只是显示上隐藏了 但是还是会占位,所以他事件还会响应,给这个透明的组件添加了.hitTestBehavior(HitTestMode.None),这个属性的效果就是 自身不响应 但是子节点和兄弟节点都还会响应,这个就是这么设计的,想要的那种 就给设置透明的组件设置.hitTestBehavior(HitTestMode.None) 让他自身不响应 再给他的子组件也设置.hitTestBehavior(HitTestMode.None) 子组件就不会响应了 就只有设置透明的组件的兄弟组件会响应。
鸿蒙的设计和ios是有区别的
更多关于HarmonyOS 鸿蒙Next opacity 配置后点击事件表现和其他平台不太相同的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,Next opacity(即下一个视图的透明度)配置后,其点击事件的表现与其他平台(如Android或iOS)存在差异,这通常源于鸿蒙系统独特的渲染机制和事件分发机制。
鸿蒙系统采用ArkUI框架进行界面开发,其事件处理模型与Android的View体系或iOS的Responder Chain有所不同。在鸿蒙中,点击事件的处理依赖于组件树的遍历和事件分发策略,这可能导致在透明度配置后,点击事件的响应区域或优先级发生变化。
具体来说,如果设置了Next opacity,鸿蒙系统可能会根据透明度值调整点击事件的穿透性,即某些情况下,点击事件可能会穿透当前视图,直接作用于其下方的视图。这种机制旨在提供更灵活的用户交互体验,但也可能引发与其他平台不一致的行为。
若需解决此类问题,开发者应深入理解鸿蒙系统的事件处理机制,并尝试通过调整组件的层级关系、透明度设置或事件监听逻辑来优化点击事件的表现。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html