arkui-x LongPressGesture触发customdialog踩坑记录
·
背景:前端arkui-x,后端android-java,Android 13系统
arkui-x的sdk:2.0.0.41,OpenHarmony sdk:5.0.0.25
需求是长按页面元素弹出一个弹窗,需要定制样式,这个弹窗上的删除按钮可触发二次弹窗。
但在开发过程中多次遇到弹窗挂死无法退出的问题。
长按自然就选择了LongPressGesture,一般标准写法为:
// customdialog定义
...... // 参数定义省略
AppOpMenuController: CustomDialogController = new CustomDialogController({
builder: AppOpMenu({ text: $popText, index: $index, isDelete: $isDelete, isSys: $isSys, packageName: $packageName }),
alignment: DialogAlignment.Center,
autoCancel: true,
cancel: () => {
console.log("cancel") // 点击蒙层的回调
},
customStyle: true
})
...... // 具体元素省略
.gesture(
// 绑定可以重复触发的LongPressGesture
LongPressGesture({ repeat: false })
.onAction((event: GestureEvent) => {
......
this.AppOpMenuController.open() // 此为提前定义的customdialog
})
.onActionEnd(() => {
})
)
因为customdialog弹开时,弹窗外区域为蒙层(mask层),默认点击蒙层(mask层)可以退出弹窗。如果想修改为点击蒙层不能退出,则设置autoCancel为false。
问题场景1:真机测试时,长按弹开弹窗,在弹窗上随便做一些操作,再点击蒙层退出。快速多次重复这个过程,就极容易触发弹窗挂死,无法退出,然后就没法作任何操作了,只能重启app。
具体复现步骤如下:
长按触发弹窗

点击第一个按钮,切换一下弹窗的设置

点击蒙层退出

再重新长按触发

多次循环操作后,某次点击蒙层退出,弹窗颜色变淡,但是没有退出。此时点击蒙层,没有任何反应,也无法作其他操作。

视频:
202411071220
补充说明:
主要页面用onHover,弹窗用onFocus复现概率高
弹窗不用onFocus,只使用onHover时,复现概率低
问题场景2:问题1是只操作第一个弹窗挂死的问题。如果在第一个弹窗上,触发二次弹窗,这样触发挂死的概率极高。动作稍微快一点就很容易触发。
视频:
2024-11-08-14-45-34
问题已经反馈上去,估计近期会得到解决。
2025-1-24:
更多推荐



所有评论(0)