uni-app IOS环境下 webview原生滑动返回uni-app内部页面出现弹窗 已解决
uni-app IOS环境下 webview原生滑动返回uni-app内部页面出现弹窗 已解决
产品分类
- uniapp/App
PC开发环境操作系统
- Mac
PC开发环境操作系统版本号
- 11.2.3
HBuilderX类型
- 正式
HBuilderX版本号
- 3.1.6
手机系统
- iOS
手机系统版本号
- IOS 14
手机厂商
- 苹果
手机机型
- 全部iPhone机型
页面类型
- vue
打包方式
- 云端
项目创建方式
- HBuilderX
App下载地址或H5网址
操作步骤
- 进入app-我的-关于我们-点击底下蓝色字“服务政策”或隐私服务进入webview页面
- 屏幕滑动返回上一页
预期结果
- 无弹窗 直接返回
实际结果
- 有不知名弹窗
bug描述
- uniapp IOS环境下 webview原生滑动返回uniapp内部页面出现弹窗
- iPhone全部机型都会
- 安卓并不会
更多关于uni-app IOS环境下 webview原生滑动返回uni-app内部页面出现弹窗 已解决的实战教程也可以访问 https://www.itying.com/category-93-b0.html
请检查一下代码中是否监听了popGesture
更多关于uni-app IOS环境下 webview原生滑动返回uni-app内部页面出现弹窗 已解决的实战教程也可以访问 https://www.itying.com/category-93-b0.html
没有监听 是需要在manifest.json的"app-plus"节点中配置 “popGesture”:“none” ???
回复 m***@163.com: 不是禁用App侧滑,可能是你的H5页面中有触发侧滑的监听。
回复 2104_DLS: 没有的哦
回复 m***@163.com: 有没有demo项目,发一下
你使用hello uni-app示例项目跑一下看看能不能出现
由于嵌入的H5页面监听元素导致和popGesture冲突
这是一个典型的iOS平台webview手势返回与uni-app页面栈冲突问题。iOS的webview支持边缘滑动返回手势,当用户在webview页面执行该操作时,系统会尝试返回上一个webview历史记录,但此时uni-app的页面栈仍保留着前一个vue页面,导致冲突并触发异常弹窗。
解决方案是通过配置pages.json禁用webview的滑动返回功能:
{
"path": "pages/webview/webview",
"style": {
"app-plus": {
"bounce": "none",
"titleNView": false,
"scrollIndicator": "none",
"popGesture": "none"
}
}
}
关键配置项popGesture: "none"
用于禁用iOS的滑动返回手势。同时建议关闭bounce效果避免其他滚动冲突。
对于已存在的webview页面,可在onLoad生命周期中通过条件编译单独处理iOS平台:
onLoad() {
// #ifdef APP-PLUS
if (uni.getSystemInfoSync().platform === 'ios') {
const webview = this.$mp.page.$getAppWebview()
webview.setStyle({
popGesture: 'none'
})
}
// #endif
}