ionic3返回上2层页面物理返回键怎么检测弹框是否打开

似乎打包成安卓APP之后是可行的 但在浏览器中运行还是不行 在浏览器中监听不到物理返回键

在页面中点击input标签的时候,弹出了手机软键盘,现在点击左上角的返回按钮的时候,直接关闭小键盘并且返回上一页了,现在想实现像物理返回键效果一样,在软键盘打开的情况下,按一下物理返回键,关闭软键盘,再按一下物理返回键返回上一个页面

Android的返回键处理就是问题之一,假如我们要实现一个在很多App中都有的在主页按返回键弹出对话框提示用户退出应用的功能,在原生应用开发中是很容易的,只要在onKeyUp事件里面对返回键事件进行处理就可以了。按2次返回键退出应用的Java代码如下:

但在使用了PhoneGap的HTML5应用程序中,事情就没有这么简单了,首先WebView接管了返回键的事件,你无法在Java层处理返回键,除非改Cordova框架的代码,但这样显然是不合适的,会带来维护问题,也不符合一般的开发规范。即使我们可以修改Cordova源码,同时处理好按返回键Webview回退上一页和在首页时弹出处理提示,也是很困难的。

      在深入分析ionic框架源码,在与ionic论坛的国外开发者交流后,终于找到了一个比较后的解决方法。Ionic作为目前国外比较活跃的HybridApp移动开发框架,对Android平台的返回键的处理是有比较合理的解决方案的。ionic框架对android返回键处理的源码如下:

返回键优先级定义,主要用途是返回键行为的优先级定义,例如当有弹出框时(优先级400),按返回键取消弹出框,不回退页面(优先级100)

注册返回键处理动作,我们自己对返回键的处理需要在这里实现了,注意返回的是一个函数,调用这个函数将取消本次事件注册。

回到我们刚开始提出的问题,在主页增加按返回键提出退出应用,在其它页面正常返回上个页面,只要注册一个处理事件就可以了,代码如下:

//主页面显示退出提示框

相对于苹果来说android还有一些功能按钮,这里面就包括了返回键。在苹果中只要你设置好每一个返回的按钮跳转的地方就可以高枕无忧了,但是android不行,因为它还有恶心的物理或者虚拟返回按钮。很多时候就需要监控这些返回按钮来进行部分操作。比如在qq  微信等应用中当你在有tabs页面时点击返回是会关闭应用。

我们要想操作返回按钮就需要注册一个事件。首先我们在run方法中注入$ionicPlatform,然后开始注册返回事件,注册方法是

  (这里需要注意的是,这里需要引入cordova.js文件才会生效,不然注册的事件不会有效果

现在我们首先来实现类似qq和微信的含有tabs的页面点击返回时退出应用,假设配置路由的时候在有tabs的页面中state的name都含有tab(注:代码中的$ionicPlatform和$ionicHistory都是需要注入)

因为页面的返回时view 优先级是100 所以这里的优先级要高于100,我这里设置的是101。如果配合$state 还可以完成很多其他的东西 (关于路由可以去看)

我要回帖

更多关于 ionic3返回上2层页面 的文章

 

随机推荐