ionic物理后退键的全面处理

本文介绍了如何在Ionic应用中全面处理物理后退键。通过使用`registerBackButtonAction`方法,首先检查并关闭打开的键盘,接着处理模态窗口,如果存在活动的模态或系统提示框,则关闭它们。该方法确保了用户交互的一致性和应用的正常流程。

//注册方法
registerBackButtonAction(tabRef: Tabs): void {
//registerBackButtonAction是系统自带的方法
this.platform.registerBackButtonAction(() => {
//键盘
if (this.keyboard.isOpen()) {
this.keyboard.close();
return;
}
//控制modal、系统自带提示框
let overlay = this.appCtrl._appRoot._overlayPortal.getActive() || this.appCtrl._appRoot._modalPortal.getActive();
if (overlay) {
overlay.dismiss();
return;
}

        //获取NavController
        let activeNav: NavController = this.appCtrl.getActiveNavs()[0];
        //如果可以返回上一页,则执行pop
        if (activeNav.canGoBack()) {
            console.log('can go back')
            activeNav.pop();
        } else {
            if (tabRef == null || tabRef._selectHistory[tabRef._selectHistory.length - 1] === tabRef.getByIndex(0).id) {
                //执行退出
                this.showExit();
            } else {
                //选择首页第一个的标签
                tabRef.select(0);
            }
        }
    });
}

//退出应用方法
showExit(): void {
    //如果为true,退出
    if (this.backButtonPressed) {
        this.platform.exitApp();
        // console.log('最小化');
        // this.platform.registerBackButtonAction(() => {
        //     this.appMinimize.minimize();
        // }); // 返回值
    } else {
        this.presentToast();
        //标记为true
        this.backButtonPressed = true;
        //两秒后标记为false,如果退出的话,就不会执行了
        setTimeout(() => this.backButtonPressed = false, 2000);
    }
}

presentToast() {
    let toast = this.toastCtrl.create({
        message: '再按一次退出应用',
        duration: 2000,
        position: 'top'
    });
    toast.onDidDismiss(() => {
        console.log('Dismissed toast');
    });
    toast.present();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值