【问题标题】:Ionic 4 - Dismiss or close Modal on platform hardware back button androidIonic 4 - 在平台硬件后退按钮android上关闭或关闭模态
【发布时间】:2019-07-14 19:32:19
【问题描述】:

在 ionic 4 中,按下硬件后退按钮时,我想关闭或关闭任何将出现的模式。 我使用了下面给定的代码,这里的条件“if(modal) { modal.dismiss(); }” 总是得到满足,即使之前的模态被解除了

constructor(private platform: Platform, private modalCtrl: ModalController) {
this.initializeapp();
}
initializeapp() {
this.platform.registerBackButtonAction(1, async () => {
    const modal = await this.modalCtrl.getTop();
    if (modal) {
        modal.dismiss();
    }
});
}

【问题讨论】:

  • 得到了一个解决方案:我已将优先级设置为 0,即 this.platform.registerBackButtonAction(0, async () => { const modal = await this.modalCtrl.getTop(); if (modal) { modal.dismiss(); } });

标签: angular cordova ionic4


【解决方案1】:

做了一些研究,Ionic 注册了一个自定义事件ionBackButton 来处理硬件后退按钮按下:

在 Ionic 中管理所有叠加层的叠加层代码通过关闭最顶层的叠加层来处理 ionBackButton 事件:

那么你的代码试图实现什么?

似乎只有在backdropDismiss也设置为true时才会这样做:

if (lastOverlay && lastOverlay.backdropDismiss) {

我假设这意味着它被归类为可选/低级覆盖,而不是模拟模式。

【讨论】:

  • 在第一个硬件后退按钮上,我必须检查是否打开了任何模态,如果打开了任何模态,则关闭该模态,如果没有打开任何模态,则向后导航一页。
  • 这是 Ionic 4 的默认行为,不是吗?如果这不是您遇到的情况,那么您的叠加层没有设置为 backdropDismiss。覆盖系统涵盖了 Ionic 中所有类型的覆盖。似乎他们使用backdropDismiss 来辨别它是否是一个重要的覆盖层,不应该只用后退按钮将其关闭。如果您显示不重要的覆盖,只需确保设置了backdropDismiss,以便硬件后退按钮可以将其关闭。
猜你喜欢
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2021-10-15
  • 2023-03-19
  • 2019-05-01
  • 1970-01-01
相关资源
最近更新 更多