CustomDialog自定义弹窗,如何禁用返回键?

CustomDialog自定义弹窗,如何禁用返回键?

阅读 699
1 个回答

在CustomDialog 自定义弹窗中,可以通过以下方式禁用返回键:
在 CustomDialog 新增的 api—onWillDismiss 中,当用户执行点击遮障层关闭、左滑/右滑、三键 back、键盘 ESC 关闭交互操作时,如果注册该回调函数,则不会立刻关闭弹窗。可以在回调中根据 reason 操作类型做响应的处理,然后通过回调的属性 dismiss,主动关闭对话框。onWillDismiss 使用参考代码如下:

@CustomDialog
struct CustomDialogExample {
  @Link textValue: string
  @Link inputValue: string
  controller?: CustomDialogController
  cancel: () => void = () => {}
  confirm: () => void = () => {}

  build() {
    Column() {
      Text('Change text').fontSize(20).margin({ top: 10, bottom: 10 })
      TextInput({ placeholder: '', text: this.textValue }).height(40).width('90%')
       .onChange((value: string) => {
          this.textValue = value
        })
      Text('Whether to change a text?').fontSize(16).margin({ bottom: 10 })
      Flex({ justifyContent: FlexAlign.SpaceAround }) {
        Button('cancel')
         .onClick(() => {
            if (this.controller!= undefined) {
              this.controller.close()
            }
          })
      }
    }
  }
}

也可以在 CustomDialogController 创建的时候指定 cancel 属性的回调函数,该函数实现退出应用的效果,代码如下:

dialogController: CustomDialogController = new CustomDialogController({ 
  builder: CustomDialogExample({}), 
  autoCancel: false, 
  cancel: ()=> this.exitApp(), 
}) 

exitApp() { 
  let pro = new process.ProcessManager(); 
  pro.exit(0); 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题