UNi小程序在安卓手机上面,需要按两次手机实体的返回按钮才能关闭,手势也是需要划两次才可以,这是为什么,IOS一次就可以,下面有一行“再按一次退出应用”的提示
- 发布:2022-02-11 20:24
- 更新:2023-12-21 16:20
- 阅读:1082
Diligent_UI - 【插件开发】【专治疑难杂症】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=193663(微信搜索飘逸科技UI小程序直接体验)】【骗子请绕道】问题咨询请加QQ群:120594820,代表作灵感实用工具小程序
uniapp项目一般不会,h5+会
为什么我iOS没办法手势退出小程序
-
6***@qq.com (作者)
我之前测试的时候发现,ios 有时候会无法退出,原因是 uniSDK 不响应了,后来我把 unisdk 的版本和 uniapp 的版本全部改了重新打包就可以了,不知道你是不是这个问题,
2023-12-08 16:12
-
回复 6***@qq.com:
我没办法手势退出,是因为通过push方式推入的ViewController,但是根Controller不是用的NavigationViewController2023-12-21 16:14
源码:
export function navigateBack ({
from = 'navigateBack',
delta,
animationType,
animationDuration
}) {
const pages = getCurrentPages()
const currentPage = pages[pages.length - 1]
if (
currentPage.$vm &&
currentPage.$vm.$options.onBackPress &&
currentPage.$vm.__call_hook &&
currentPage.$vm.__call_hook('onBackPress', {
from
})
) {
return
}
.....
}
从这个方法可以看出, 每次调用navigateBack,都会先回调当前页面的onBackPress方法,如果方法返回true,则会跳过默认的双击退出逻辑,因此可以通过复写此逻辑,达到点击返回键退出小程序功能。
实现代码如下:
// 此处是vue3的写法
onBackPress(options => {
// 这句是退出小程序
plus.runtime.quit()
// 必须返回true,才能拦截返回事件
return true;
})
这种方式只针对Android双击退出问题,iOS不回调。