2026/5/21 4:36:18
网站建设
项目流程
做网站后期费用,阿里云建站套餐,wordpress表单的增加与查询,舟山公司网站建设如何使用openCustomDialog禁止手势关闭的实现方案?提供源码和方案思路
一、结论 要实现禁止手势 / 外部点击关闭弹窗,核心依赖两个关键配置: 1、autoCancel 参数: 控制点击弹窗外部遮障层是否触发关闭,设置为 false 可直接禁用该关闭方式。
**2、onWillDismiss 回调: *…如何使用openCustomDialog禁止手势关闭的实现方案?提供源码和方案思路一、结论要实现禁止手势 / 外部点击关闭弹窗,核心依赖两个关键配置:1、autoCancel 参数:控制点击弹窗外部遮障层是否触发关闭,设置为 false 可直接禁用该关闭方式。**2、onWillDismiss 回调:**弹窗关闭前的拦截钩子,通过 DismissReason 枚举判断关闭原因,返回 false 可阻止弹窗关闭。3、DismissReason 关键枚举值:PRESS_BACK:点击三键 back、侧滑(左滑 / 右滑)、键盘 ESC 触发的关闭;TOUCH_OUTSIDE:点击弹窗遮障层(外部区域)触发的关闭;CLOSE_BUTTON:点击弹窗内关闭按钮触发的关闭;其他枚举(SLIDE_DOWN、SLIDE):适配半模态转场的滑动关闭场景二、代码实现和详细解释1、基础配置:禁用外部点击+拦截手势关闭核心逻辑是通过autoCancel禁用外部点击关闭,再利用onWillDismiss回调根据DismissReason拦截手势/返回键关闭,仅放行主动操作(如按钮点击)。import{BusinessError}from'@kit.BasicServicesKit';@Entry @Component struct DialogCloseTestPage{privatecustomDialogComponentId:number=0;@BuildercustomDialogComponent(){Column(){Text('弹窗内容区域Blablabla..').fontSize(20)Row({space:10}){Button('取消').onClick(()={try{this.getUIContext().getPromptAction().closeCustomDialog(this.customDialogComponentId)}catch(error