uni-app ios原生子弹窗左滑遮罩不消失再次点击就报找不到这个subnvue的id的错
uni-app ios原生子弹窗左滑遮罩不消失再次点击就报找不到这个subnvue的id的错
| 项目信息 | 详细信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Mac |
| PC开发环境版本 | MacBook Pro (Retina, 13-inch, Late 2013) |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.2.11 |
| 手机系统 | iOS |
| 手机系统版本 | iOS 14 |
| 手机厂商 | 苹果 |
| 手机机型 | iphone |
| 页面类型 | nvue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
| App下载地址 | 维客淘 |
操作步骤:
创建一个原生子弹窗
在任何的ios设备上运行
左滑页面(想退出,安卓测试没有问题)
页面的遮罩没有消失 再次点击后就消失 重复点击弹窗一直不出来就报找不到这个subnvue的ID的错
预期结果:
侧滑遮罩不消失,再次点击也报错
实际结果:
能像安卓一样侧滑退出这个subnvue,再次点击也可以触发
bug描述:
点击原生子弹窗时候,左滑返回会出现遮罩,点击遮罩消失后再次点击就出现找不到这个子弹窗的id, [JS Framework] Failed to execute the callback function: 17:10:58.461 Error: Unable to find SubNVue, id=imShare __ERROR

更多关于uni-app ios原生子弹窗左滑遮罩不消失再次点击就报找不到这个subnvue的id的错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
用示例代码hello uni-app能出现你的问题吗?
不能的话你需要排查出来具体你哪个页面,甚至哪一行导致的。
找出来具体原因后提供一个能复现你描述的bug的最小化demo,让我们及时定位问题,及时修复。
【bug优先处理规则】https://ask.dcloud.net.cn/article/38139
更多关于uni-app ios原生子弹窗左滑遮罩不消失再次点击就报找不到这个subnvue的id的错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好,我直接创建了hello uniapp的项目 因为我想实现点击原生子弹窗点击阴影不消失的场景,所以在style里面给了高度和宽度分别是100%,然后侧滑就会复现这个问题
这是一个已知的iOS原生子窗口(subNVue)的交互问题。当在iOS设备上左滑返回时,子窗口的遮罩层可能无法正确销毁,导致后续操作时系统找不到对应的subNVue实例。
问题原因: iOS的侧滑返回手势与subNVue的关闭机制存在冲突。左滑返回时,subNVue的遮罩层可能未被正确移除,但子窗口实例已被销毁,导致再次调用时找不到对应ID。
解决方案:
-
监听页面返回事件: 在父页面中监听
onBackPress或onNavigationBarButtonTap事件,手动关闭subNVue:// 在父页面中 onBackPress(options) { const subNVue = uni.getSubNVueById('imShare') if (subNVue) { subNVue.hide() return true // 阻止默认返回行为 } } -
使用遮罩层点击事件: 为subNVue的遮罩层添加点击关闭事件:
// 在subNVue页面中 mounted() { const mask = uni.getSubNVueById('imShare_mask') // 假设遮罩有独立ID if (mask) { mask.addEventListener('click', () => { uni.getSubNVueById('imShare').hide() }) } } -
统一关闭管理: 创建统一的subNVue管理函数,确保关闭时完全销毁:
let currentSubNVue = null function showSubNVue(id) { if (currentSubNVue) { currentSubNVue.hide() } currentSubNVue = uni.getSubNVueById(id) currentSubNVue.show() } function hideSubNVue() { if (currentSubNVue) { currentSubNVue.hide() currentSubNVue = null } }

