HarmonyOS 按下返回键时,如何禁止CustomDialog退出

上传文件或下载文件时,会弹窗提示用户等待,并禁止用户点返回键退出弹窗。

HarmonyOS
2024-08-30 09:54:54
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

可通过onBackPress事件拦截,在onBackPress中返回true表示页面自己处理返回逻辑,不会执行默认的返回逻辑。

参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-custom-component-lifecycle-V5#onbackpress

目前无法设置弹窗状态下的禁止返回操作,建议采用自定义组件和周期函数onBackPress()达到类似的目标效果。

原理:当用户点击返回按钮时触发,仅@Entry装饰的自定义组件生效。返回true表示页面自己处理返回逻辑,不进行页面路由;返回false表示使用默认的路由返回逻辑,不设置返回值按照false处理。

您看下替代方案,参考demo:

import { common } from '@kit.AbilityKit' 
 
@Entry 
@Component 
struct CustomDialogPage { 
 @Provide("isShowed") isShowed: boolean = false 
 @Provide("ifBanBack") ifBanBack: boolean = true 
 
 /** * 通过该方法设置返回键以及侧边栏的禁用与否 * @returns */ 
 onBackPress() { 
  return this.ifBanBack 
 } 
 
 build() { 
  Column() { 
   Button('点击操作弹窗').onClick(() => { 
    this.isShowed = !this.isShowed 
   }).visibility(this.isShowed ? Visibility.None : Visibility.Visible) 
   CustomExample().visibility(this.isShowed ? Visibility.Visible : Visibility.None) 
  }.width('100%').height('100%').justifyContent(FlexAlign.Center) 
 } 
} 
 
@Component 
struct CustomExample { 
 @Consume("isShowed") isShowed: boolean 
 @Consume("ifBanBack") ifBanBack: boolean 
 
 build() { 
  Column() { 
   Text('This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content. This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content.') 
   Blank() 
   Row() { 
    Button("拒绝").width(100).onClick(() => { 
     const context = getContext(this) as common.UIAbilityContext; 
     context.terminateSelf() //退出app 
    }) 
    Button('接受').width(100).onClick(() => { 
     this.isShowed = false 
     this.ifBanBack = false 
    }) 
   }.width('100%').justifyContent(FlexAlign.SpaceAround).padding({ bottom: 10 }) 
  }.width('90%').height('70%').backgroundColor('#D5D5D5').borderRadius(10) 
 } 
}
分享
微博
QQ
微信
回复
2024-08-30 18:04:13
相关问题
HarmonyOS 如何监听物理返回
37浏览 • 1回复 待解决
HarmonyOS如何禁止页面左右滑动返回
966浏览 • 1回复 待解决
HarmonyOS 页面如何禁止手势返回
34浏览 • 1回复 待解决
HarmonyOS 弹窗中如何拦截返回
45浏览 • 1回复 待解决
HarmonyOS dialog如何禁止侧滑返回关闭
32浏览 • 1回复 待解决
如何屏蔽系统的返回
446浏览 • 1回复 待解决
鸿蒙jsUi如何制作按钮动效
8603浏览 • 3回复 待解决
HarmonyOS 物理返回监听
79浏览 • 1回复 待解决
CustomDialogController禁用返回
352浏览 • 1回复 待解决
HarmonyOS page中如何获取返回事件?
464浏览 • 1回复 待解决
HarmonyOS 监听手机物理返回
44浏览 • 1回复 待解决
HarmonyOS如何退到后台退出socket
536浏览 • 0回复 待解决