HarmonyOS 如何禁止弹窗关闭?

现在设置了一个弹窗用于强制用户更新,虽然设置了autoCancel,但是还是会响应返回手势关闭弹窗

当客户端版本小于后端设置的最小版本时,会强制用户进行更新,未更新不允许用户关闭弹窗进行操作

阅读 431
1 个回答

自定义弹框禁止手势关闭可通过onBackPressed属性实现,参考链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-app-ability-uiability-V5\#uiabilityonbackpressed10

参考demo:

@Component
export struct DefaultDialog {
  private dialogOptions?: AppDialogOption;

  build() {
    NavDestination() {
    }
    .onBackPressed((): boolean => { // true为拦截 
      if (this.dialogOptions?.onBackPressed) {
        return this.dialogOptions?.onBackPressed()
      } else {
        return false;
      }
    })
  }
} 

api12中新增了onWillDismiss方法:

1.当用户执行点击遮障层关闭、左滑/右滑、三键back、键盘ESC关闭交互操作时,如果注册该回调函数,则不会立刻关闭弹窗。在回调函数中可以通过reason得到阻拦关闭弹窗的操作类型,从而根据原因选择是否能关闭弹窗。当前组件返回的reason中,暂不支持CLOSE\_BUTTON的枚举值。

2.在onWillDismiss回调中,不能再做onWillDismiss拦截。

可参考以下文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-methods-custom-dialog-box-V5\#ZH-CN\_TOPIC\_0000001847211028\_\_customdialogcontrolleroption

logo
HarmonyOS
子站问答
访问
宣传栏