使用自定义弹出框
布局使用CustomLayout自定义组件的自定义布局方式:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-custom-component-layout-V5\#sizeresult10
自定义布局内的视图,添加onclick或者onTouch方法,都无法获取到监听事件。
看日志,点击监听应该是被dialog拦击了。
使用自定义弹出框
布局使用CustomLayout自定义组件的自定义布局方式:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-custom-component-layout-V5\#sizeresult10
自定义布局内的视图,添加onclick或者onTouch方法,都无法获取到监听事件。
看日志,点击监听应该是被dialog拦击了。
解决方案
问题原因:自定义弹出框容器,配合自定义组件的onMeasureSize和onPlaceChildren的方法,存在点击事件无法拦击到的情况。
例如:1、child节点计算出尺寸。而onMeasureSize返回父组件的尺寸时,是0。那么这个自定义组件在dailog中默认尺寸是0。没有拦截区域了,点击任何区域,都认为是dialog之外的区域,会自动销毁dialog。
2、如果onMeasureSize返回了父组件尺寸,但是onPlaceChildren重新设置child的坐标,超出了,父组件区域,点击事件,只能在父组件区域被拦截,子组件才可以收到点击事件。
如下示意图: