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如何禁止页面左右滑动返回
571浏览 • 1回复 待解决
HarmonyOS page中如何获取返回事件?
215浏览 • 1回复 待解决
HarmonyOS如何退到后台退出socket
377浏览 • 0回复 待解决
如何屏蔽系统的返回
289浏览 • 1回复 待解决
HarmonyOS 返回强制监听及重写
681浏览 • 1回复 待解决
CustomDialogController禁用返回
195浏览 • 1回复 待解决
鸿蒙jsUi如何制作按钮动效
8445浏览 • 3回复 待解决
API9用ets开发的APP如何退出 ?
2919浏览 • 1回复 待解决