HarmonyOS鸿蒙Next中XComponent在native侧如何绑定手势?
HarmonyOS鸿蒙Next中XComponent在native侧如何绑定手势?
我有两个问题:
-
Native XComponent
在native
侧如何绑定手势?我现在是用的方法是参考官方demo,ArkUI
层使用XComponent
,加载C++
库,在C++
层通过napi_unwrap
获取OH_NativeXComponent
对象,调用RegisterCallback
绑定触摸事件,但是触摸事件结构体好像并不提供双指的手势,需要自己解析实现,我看官网的文档,ArkUI_NodeHandle
好像能绑定手势事件,但是OH_NativeXComponent
对象和ArkUI_NodeHandle
有什么关联吗?如何让OH_NativeXComponent
绑定到手势事件??或者有没有其他方法,创建OpenGL渲染窗口的,省略掉ArkUI
层的声明。 -
还有就是在
native
注册了事件后,好像ArkUI
层的XComponent
就触发不了onTouch
了,如何让ArkUI
层和C++
层都能出发触摸事件呢?
更多关于HarmonyOS鸿蒙Next中XComponent在native侧如何绑定手势?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
- 关于Native XComponent手势绑定问题:
- 目前OH_NativeXComponent确实只提供基础的触摸事件回调,需要自行处理双指手势识别逻辑
- ArkUI_NodeHandle与OH_NativeXComponent没有直接关联,前者是ArkUI节点句柄,后者是Native层接口
- 替代方案建议: a) 继续使用当前方案,在native层自行实现手势识别 b) 通过napi在JS层处理手势后通过native接口传递给C++层 c) 使用ArkUI的Gesture组件包裹XComponent来处理复杂手势
- 关于事件冲突问题:
- 这是预期行为,事件会被优先传递到native层
- 解决方案: a) 在native层处理完事件后通过napi主动触发JS回调 b) 使用JS层Gesture事件代替onTouch c) 通过native侧返回false让事件继续冒泡到JS层
注意:当前版本确实存在一定限制,建议根据实际需求选择最适合的交互架构。