IOS wx.hideTabBar 第一次调用失败
发布于 6 年前 作者 chao62 3936 次浏览 来自 问答

tabBar 定义了四个页面,其中希望进入 store 页面后自动隐藏tabBar,而展现自定义的底部菜单。使用wx.hideTabBar(),在安卓上表现正常,但是在IOS 上测试出现问题,用了几台iphone来测试都是第一次进入store页面,底部tabBar没有如期隐藏,导致出现双层导航菜单(见图),后退,再此进入user页面才会隐藏。tabBar其他页面本身的switchTab跳转是正常的。store页面也是正常能跳转的。只是进入页面触发 wx.hideTabBar()的问题。 P.S. 无论是使用onload还是onshow来触发wx.hideTabBar(),情况都一样。

5 回复

IOS下,在onLoad里面使用wx.hideTabbar,然后分享出去,从APP分享卡片点进去退出来点进去,还是会出现tabbar的内容消失,但高度还在的情况

已解决,最后在 onReady 触发wx.hideTabBar() 能在IOS 下隐藏tabBar。 但很偶然的情况下还是会有一次半次会出现两层导航菜单(hideTabBar无效,IOS下),作为保障,我做了个二次检测:

onReady 调用

wx.hideTabBar({

    fail:function(){

        setTimeout(function(){  // 做了个延时重试一次,作为保底。

            wx.hideTabBar()

        },500)       

    }

});

然后

onShow 加入调用代码

    wx.hideTabBar()

我的理解:

对于IOS系统而言,第一次进入,必须在最后 页面ready的情况下调用hideTabBar()才有效,这样才能隐藏。而在onShow那里也调用,原因是,当小程序在运行生命周期内,假如用户退出了当前这个需要隐藏tabbar的页面C,去了其他tab页面(A/B/D),再回来这个页面C的话,还需要触发hideTabBar的。这时候只有onShow合适。

此坑,与大伙分享,希望能帮到其他人。

另外,IOS以及华为机上,隐藏tabBar都会一闪跳动一下。效果不太理想。反而是被大家嫌弃的vivo x7上没有这个闪动的情况。 wx.hideTabBar() 估计还需要进一步优化性能或逻辑。

感谢黄思程官方小伙伴的回复!

你好,问题已复现,我们会在后续版本中进行修复。

ISO下,虽然wx.hideTabbar函数可以调用成功,但是不能保持

回到顶部