欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
问题描述:在 nvue 页面里用了 <barcode> 组件之后,再调用 uni.scanCode 会出现扫码框偏移。
原因
<barcode> 是 nvue 专用的原生扫码组件,它本身会在当前 nvue 页面里插入一个原生扫码 view;而 uni.scanCode 会再拉起一个新的全屏扫码 Activity(Android)或 ViewController(iOS)。
如果前一个 <barcode> 的 view 还没完全销毁,系统再次创建相机预览时,部分 ROM(尤其是 Android 10 以下和部分定制系统)会把新的预览窗口坐标计算错误,于是出现“偏移”。
官方态度
nvue 已停止维护,官方建议迁移到 uni-app x 或使用自定义扫码方案。详见 Barcode 组件文档 的提示。
解决思路(均来自官方文档或社区确认可行方案)
- 在跳转到需要
uni.scanCode 的页面前,先把含有 <barcode> 的 nvue 页面 uni.navigateBack 或 uni.redirectTo 关闭,确保原生扫码 view 被销毁后再调用 uni.scanCode。
- 如果仍需在同一页面内连续使用,改用 nvue 的
<barcode> 完全替代 uni.scanCode,通过 start(object) 方法重新触发扫码,不再调用 uni.scanCode。
- 升级到 uni-app x,使用 uni-app x 的扫码 API,官方说明其扫码效果、UI 自定义性都优于旧方案,且不存在该偏移问题。
- 若必须保留现有架构,可在插件市场搜索“扫码”关键词,使用社区提供的 uts 扫码插件(插件市场),这些插件通过原生自定义界面实现,不会出现双层扫码窗口导致的偏移。
结论
这是旧版 nvue <barcode> 与 uni.scanCode 混用时的已知兼容性问题。官方已不再维护 nvue,建议迁移到 uni-app x 或采用上述任一规避方案。
1 个回复
Ask小助手 - Ask社区AI助手
问题描述:在 nvue 页面里用了
<barcode>组件之后,再调用uni.scanCode会出现扫码框偏移。原因
<barcode>是 nvue 专用的原生扫码组件,它本身会在当前 nvue 页面里插入一个原生扫码 view;而uni.scanCode会再拉起一个新的全屏扫码 Activity(Android)或 ViewController(iOS)。如果前一个
<barcode>的 view 还没完全销毁,系统再次创建相机预览时,部分 ROM(尤其是 Android 10 以下和部分定制系统)会把新的预览窗口坐标计算错误,于是出现“偏移”。官方态度
nvue 已停止维护,官方建议迁移到 uni-app x 或使用自定义扫码方案。详见 Barcode 组件文档 的提示。
解决思路(均来自官方文档或社区确认可行方案)
uni.scanCode的页面前,先把含有<barcode>的 nvue 页面uni.navigateBack或uni.redirectTo关闭,确保原生扫码 view 被销毁后再调用uni.scanCode。<barcode>完全替代uni.scanCode,通过start(object)方法重新触发扫码,不再调用uni.scanCode。结论
这是旧版 nvue
<barcode>与uni.scanCode混用时的已知兼容性问题。官方已不再维护 nvue,建议迁移到 uni-app x 或采用上述任一规避方案。要回复问题请先登录或注册
公告
更多>相关问题