HarmonyOS 鸿蒙Next 左右滑禁止关闭弹框,如何实现

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 左右滑禁止关闭弹框,如何实现 现在打开弹框,之后使用左滑退出操作,会关闭弹框,通过onPressBack拦截不生效,怎么实现不退出弹框呢

3 回复

弹窗有个属性,通过加上下面代码即可左右划不关闭弹窗。(点赞我)

onWillDismiss: (dismissDialogAction: DismissDialogAction) => {
  if (dismissDialogAction.reason !== DismissReason.PRESS_BACK) {
    dismissDialogAction.dismiss()
  }
}

更多关于HarmonyOS 鸿蒙Next 左右滑禁止关闭弹框,如何实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


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

具体可以参考:

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() -- 打开就是执行关闭弹窗操作,注释掉就是不执行
    }
}

在HarmonyOS(鸿蒙)系统中,若要实现左右滑动禁止关闭弹框的功能,可以通过自定义弹框组件并处理滑动事件来实现。以下是一个简要的实现思路:

  1. 自定义弹框组件:创建一个自定义的Dialog或弹窗组件,用于显示需要禁止左右滑动关闭的内容。

  2. 拦截滑动事件:在自定义弹框组件中重写触摸事件处理方法(如onTouchEvent),检测并拦截左右滑动的手势。可以通过判断滑动方向,如果不符合关闭条件(即左右滑动),则不执行关闭逻辑。

  3. 设置弹框属性:确保弹框的属性设置允许自定义触摸事件处理,而不是使用系统默认的滑动关闭行为。

  4. 展示弹框:在需要显示弹框的地方,实例化并展示这个自定义弹框组件。

具体实现时,可能需要深入了解HarmonyOS的UI框架和事件处理机制。由于鸿蒙系统的API和组件可能与Android或iOS有所不同,因此建议查阅鸿蒙系统的官方文档或示例代码,了解如何正确创建和自定义组件,以及如何处理触摸事件。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部