HarmonyOS 鸿蒙Next CustomDialog自定义弹窗,如何禁用返回键
HarmonyOS 鸿蒙Next CustomDialog自定义弹窗,如何禁用返回键
应用场景是: 在打开APP后,弹出来隐私协议的弹窗,其中有[同意]和[不同意]两个按钮, 在触发[返回键]时,不允许这个弹窗消失,只可以通过调用 this.controller.close() 来关闭弹窗,有什么办法实现吗,或者用其他弹窗
关于HarmonyOS 鸿蒙Next CustomDialog自定义弹窗 如何禁用返回键可以参考下面代码:
@Entry
@Component
struct Test {
// 确定删除历史记录的弹窗
dialogController: CustomDialogController = new CustomDialogController({
builder: CustomHistoryDialog({
title: '确认全部删除?',
cancel: this.onCancel,
confirm: this.onConfirm,
}),
alignment: DialogAlignment.Default, // 可设置dialog的对齐方式,设定显示在底部或中间等,默认为底部显示
autoCancel: false,
onWillDismiss: (dismissDialogAction: DismissDialogAction) => {
if (dismissDialogAction.reason != DismissReason.PRESS_BACK) {
this.dialogController?.close();
}
},
offset: { dx: 0, dy: -25 }
})
onCancel(title: string) {
promptAction.showToast({ message: `取消${title}` })
}
onConfirm() {
promptAction.showToast({ message: '确定' })
}
build() {
Button('我的按钮')
.fontColor('#FF5500')
.fontSize(20)
.onClick(() => {
this.dialogController.open()
})
}
}
@CustomDialog
struct CustomHistoryDialog {
controller: CustomDialogController
title: string = ''
confirm: () => void = () => {
}
cancel: (title: string) => void = (title: string) => {
}
build() {
Column() {
Text(this.title)
Row() {
Button('取消').onClick(() => {
this.cancel(this.title)
this.controller.close()
})
Button('确定').onClick(() => {
this.confirm()
this.controller.close()
})
}
}
}
}
请问如何让点击事件触发手机上的返回按钮,实现关闭软键盘
点击返回键,让弹窗再次打开,但是貌似无效!不知为何
这种是无法这样实现的,这个组件无法拦截。 有一个办法就是你自己写一个Page,类似于弹出框,然后通过 onBackPress(){ return true } 页面拦截。这样按返回键是无效的。只有通过了,你返回false,不拦截。
也是一种办法👍
可以在new CustomDialogController 时添加cancel回调,点击返回键会触发,然后再把弹窗显示出来,效果上会闪一下,看你能否接受闪动。 cancel:()=>{ this.dialogController.open() }
有道理!只要点取消,我就继续弹出来弹窗! 谢谢
可以添加onWillDismiss回调,这样就可以拦截到返回事件 onWillDismiss: (action: DismissDialogAction) => { if (action.reason != DismissReason.PRESS_BACK) { this.loadingDialogController?.close(); } }
API11我没有权限看啊,看不了资料。API9里面 @Builder只能在局部使用。
在HarmonyOS中,如果你正在使用Next CustomDialog
(假设这是指基于鸿蒙系统自定义的Dialog实现,因为HarmonyOS本身没有直接名为Next CustomDialog
的组件,但概念上类似Android中的自定义Dialog),并希望禁用返回键的响应,你可以通过以下几个步骤来实现:
-
拦截返回键事件:在Dialog或包含Dialog的Activity/Page中,通过覆盖
onBackPressed()
方法或监听返回键的按键事件(如果使用的是Page,则可能是通过onKeyEvent
或类似方法),来阻止返回键的默认行为。 -
设置Dialog的取消监听:确保你的Dialog没有设置通过返回键来取消的监听器。如果你使用的是Dialog的某个方法设置了这样的行为(例如,某些框架下的
setCancelable(true)
),需要将其改为setCancelable(false)
来阻止通过返回键关闭Dialog。 -
自定义行为:如果你希望用户在按下返回键时执行某些特定的操作(而不是直接关闭Dialog),可以在拦截到返回键事件后,添加自定义的逻辑。
请注意,具体的实现可能会根据你的项目结构和使用的框架有所不同。如果上述方法在你的项目中不适用,可能需要检查你的Dialog实现或框架文档以找到更具体的解决方案。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html