HarmonyOS createWindow 创建的 window 遮挡拦截了点击事件
window.createWindow 创建出来的 window 会拦截全屏的点击事件,导致无法点击背后的视图。
我们在项目中用 window 来实现自定义弹窗、snackBar等功能,通过 window.createWindow 方法,传入 context、type=Dialog 来创建 window,之后用 resize 方法,将 window 大小设置到展示的位置,然后 show 出来。
目前存在的问题是,window 并非全屏展示的,只是占了显示的一小部分(从Inspector 中看也是),但是 window 展示的时候,会全屏地拦截所有的点击事件,导致无法点击到背后的视图。
1.我们之前用的是 windowStage 的 createSubwindow 方法,subWindow 在resize 之后表现正常,不会拦截背后事件。所以这是 window 的特性还是 bug?有方法可以规避吗?
2.之前用 subWindow 存在的问题是 subWindow 展示会影响 router 的行为,导致无法跳转路由,但是用 window 是可以正常跳转的,但现在用 window 则存在全屏拦截手势的问题,请问有没有什么两全其美的解决方案呢?
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS window.createWindow模拟实现dialog
18浏览 • 1回复 待解决
Slider拦截点击事件失败
286浏览 • 1回复 待解决
UiExtension如何拉起弹框遮挡window,而不是只遮挡UiExtension部分
778浏览 • 1回复 待解决
HarmonyOS toggle 点击拦截
27浏览 • 1回复 待解决
HarmonyOS如何拦截list的滑动事件?
398浏览 • 1回复 待解决
WebView goBack事件拦截。
1080浏览 • 1回复 待解决
HarmonyOS 创建window失败,返回1300002
67浏览 • 1回复 待解决
HarmonyOS UI组件事件拦截处理
397浏览 • 1回复 待解决
HarmonyOS CustomDialogController可否拦截返回事件?
345浏览 • 1回复 待解决
Stack容器中,顶层组件遮挡底部组件导致其点击事件无效。这种情况该怎么解决?
1121浏览 • 1回复 待解决
如何创建一个window?
334浏览 • 1回复 待解决
HarmonyOS RN如何拦截返回事件
74浏览 • 1回复 待解决
HarmonyOS 子组件如何拦截触摸事件
65浏览 • 1回复 待解决
如何拦截onTouch事件传递
691浏览 • 1回复 待解决
HarmonyOS 富文本点击事件
456浏览 • 1回复 待解决
如何在subwindow放屏幕中央的时候,外围区域主window还能继续点击、滑动等用户事件
488浏览 • 1回复 待解决
HarmonyOS 返回及侧滑返回无法拦截事件
482浏览 • 1回复 待解决
HarmonyOS 侧滑返回事件拦截与绑定
1258浏览 • 1回复 待解决
HarmonyOS 触摸事件是否有分发和拦截?
631浏览 • 1回复 待解决
如何解决window创建的窗口默认焦点不在界面上,导致不响应返回事件的问题
1696浏览 • 1回复 待解决
HarmonyOS 如何监听推送消息的点击事件
41浏览 • 1回复 待解决
HarmonyOS ImageSpan点击事件无法触发
464浏览 • 1回复 待解决
HarmonyOS Navigation的事件里不能自定义backButton的点击事件
528浏览 • 1回复 待解决
1.Q:我们之前用的是 windowStage 的 createSubwindow 方法,subWindow 在resize 之后表现正常,不会拦截背后事件。所以这是 window 的特性还是 bug?有方法可以规避吗?
A:该现象是window的特性,会拦截点击事件
2.Q:之前用 subWindow 存在的问题是 subWindow 展示会影响 router 的行为,导致无法跳转路由,但是用 window 是可以正常跳转的,但现在用 window 则存在全屏拦截手势的问题,请问有没有什么两全其美的解决方案呢?
A:采用router.pushUrl跳转页面的时候,是全局性的并没有和某个ui实例绑定,在多实例场景下使用比较混乱,导致实例获取接口行为不一致。
解决方案及示例:
推荐使用指定UI实例对象的正式方案:
模拟的登录页面代码如下:
文件为 Index.ets
登录请求时候的子窗loading页面代码如下
文件为SubPage.ets
分析是因为利用await将异步转为同步,就不会有时序错乱的问题,不会出现多实例调用router.pushUrl 方法。
侧滑失效是因为子窗口聚焦了,可以设置子窗口不聚焦,
1.设置子窗口不聚焦(防止左滑事件不作用在主窗口上):
2.在AudioFloatingWidget页面增加onBackPress()方法,方法里手动关闭子窗口
参考链接:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5