HarmonyOS 鸿蒙Next 弹窗消失的问题
HarmonyOS 鸿蒙Next 弹窗消失的问题
我们用 CustomDialog
自定义了一个启动页的隐私协议弹窗,我们想实现的效果是,如果用户点同意协议,弹窗才消失并能进入首页,而且需要禁止用户自己关闭弹窗(就是点击弹窗外的区域和返回按钮,都不关闭弹窗)。我们现在设置了 autoCancel
,点击空白区域弹窗不消失,但是点击返回按钮弹窗还是会消失,请问这个问题应该怎么解决呢?
把返回按钮的回调取消就行
参考onWillDismiss回调:当用户执行点击遮障层关闭、左滑/右滑、三键back、键盘ESC关闭交互操作时,如果注册该回调函数,则不会立刻关闭弹窗。在回调函数中可以通过reason得到阻拦关闭弹窗的操作类型,从而根据原因选择是否能关闭弹窗。当前组件返回的reason中,暂不支持CLOSE_BUTTON的枚举值。
@CustomDialog struct CustomDialogExample { cancel?: () => void confirm?: () => void controller: CustomDialogController onBackPress(): boolean | void { return false }
build() { Column() { Text(‘我是内容’).fontSize(20).margin({ top: 10, bottom: 10 }) Flex({ justifyContent: FlexAlign.SpaceAround }) { Button(‘cancel’) .onClick(() => { //取消回调 // this.controller.close() // if (this.cancel) { // this.cancel() // } }).backgroundColor(0xffffff).fontColor(Color.Black)
Button('confirm')
.onClick(() => {
this.controller.close()
if (this.confirm) {
this.confirm()
}
}).backgroundColor(0xffffff).fontColor(Color.Red)
}.margin({ bottom: 10 })
}
} }
@Entry @Component struct CustomDialogUser { dialogController: CustomDialogController = new CustomDialogController({ builder: CustomDialogExample({ cancel: ()=> { this.onCancel() }, confirm: ()=> { this.onAccept() }, }),
onWillDismiss:(dismissDialogAction: DismissDialogAction)=> {
console.info("reason=" + JSON.stringify(dismissDialogAction.reason))
console.log("dialog onWillDismiss")
if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {
// dismissDialogAction.dismiss()
}
if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
// dismissDialogAction.dismiss()
}
}
})
onCancel() { console.info(‘Callback when the first button is clicked’) }
onAccept() { console.info(‘Callback when the second button is clicked’) }
build() { Column() { Button(‘click me’) .onClick(() => { this.dialogController.open() }) }.width(‘100%’).margin({ top: 5 }) } }
更多关于HarmonyOS 鸿蒙Next 弹窗消失的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
onWillDismiss:
针对HarmonyOS 鸿蒙Next弹窗消失的问题,可能的原因及解决方法如下:
弹窗消失可能由于以下几种情况导致:
-
系统资源回收:当系统资源紧张时,为了保障系统流畅性,可能会回收部分后台进程或UI组件,包括弹窗。此时,需检查系统资源使用情况,优化应用内存管理。
-
弹窗超时设置:部分弹窗可能设置了自动消失的时间,当达到设定时间后,弹窗会自动关闭。检查弹窗的创建代码,确认是否有超时设置,并调整至合适的时间。
-
用户交互导致:用户可能通过某些操作(如点击屏幕其他区域)导致弹窗消失。检查弹窗的交互逻辑,确保用户操作不会导致非预期的弹窗关闭。
-
系统或应用Bug:系统或应用本身可能存在Bug,导致弹窗异常消失。尝试更新系统或应用至最新版本,看问题是否得到解决。
-
权限或策略限制:某些情况下,系统权限或策略可能限制弹窗的显示。检查应用权限设置,确保应用具有显示弹窗的必要权限。
如果以上方法均未能解决问题,可能是更深层次的系统或应用问题。此时,建议直接联系官网客服以获取更专业的技术支持。官网地址是:https://www.itying.com/category-93-b0.html