uni-app 离线打包nvue页面原生导航栏隐藏bug

uni-app 离线打包nvue页面原生导航栏隐藏bug

操作步骤:

  • 扩展-》设置中心-》左上角返回-》导航栏无法自动隐藏-》点击离线中心手动隐藏-》nvue页面布局出现错误

预期结果:

  • nvue页面(图1)pushViewController 跳转iOS原生页面(图2),返回后导航栏正常隐藏

实际结果:

  • 图3图4导航栏出现bug

bug描述:

  • nvue页面pushViewController 跳转iOS原生页面,返回后导航栏无法隐藏
信息类别 详细信息
产品分类 uniapp/App
PC开发环境 Mac
PC版本号 11.2.2 (20D80)
HBuilderX 正式
HBuilderX版本 3.1.2
手机系统 iOS
手机版本号 IOS 14
手机厂商 苹果
手机机型 iPhone 11
页面类型 nvue
打包方式 离线
项目创建方式 HBuilderX

Image Image Image Image

App下载地址或H5网址


更多关于uni-app 离线打包nvue页面原生导航栏隐藏bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

解决方案:
在原生工程ViewController.m中修改(同时解决右滑返回问题):

(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:YES]; }

(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.delegate = nil; self.navigationController.interactivePopGestureRecognizer.enabled = NO; } }

(void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; self.navigationController.interactivePopGestureRecognizer.delegate = (id)self; self.navigationController.interactivePopGestureRecognizer.enabled = YES; }

更多关于uni-app 离线打包nvue页面原生导航栏隐藏bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的离线打包场景下nvue页面与原生页面交互导致的导航栏状态同步问题。当nvue页面通过pushViewController跳转到iOS原生页面后,返回时原生导航栏状态未能正确恢复。

问题分析:

  1. 原生页面与nvue页面的导航栏管理机制不同,状态同步存在时序问题
  2. 离线打包环境下,原生模块与uni-app运行时的通信可能出现延迟
  3. 导航栏隐藏/显示状态在页面栈切换时未能及时更新

解决方案: 在nvue页面的onShow生命周期中强制设置导航栏状态:

onShow() {
    // 强制隐藏导航栏
    uni.hideNavigationBarLoading()
    // 确保导航栏隐藏
    plus.navigator.setFullscreen(true)
}
回到顶部