隐藏Tabbar 解决该区域点击事件

最近在做的项目,大部分是H5。首页整个模块是H5写的,下面的tabbar是原生的,点击首页商品,跳转到详情,隐藏tabbar,因为没有push,所以用的hidden,但是发现原tabbar区域的点击事件点击不了,搞了好长时间,终于算是解决了。
使用下面的方法打印 数组中有两个子控件(UITransitionView,UITabBar)

po self.tabBarController.view.subviews

打印如图所示


image.png

所以光用 self.tabBarController.tabBar.hidden = YES 并没有什么用,虽然看图层也没看见前面有view遮挡,但是它确实是存在的,要不然点击事件没反应。同时也要把tabbar的frame至为0,下面的代码就是了

// 显示隐藏tabbar
- (void)isShowTabBar:(BOOL)show
{
    if (show)
    {
        _webView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT-SafeAreaNavHeight-SafeAreaBarHeight);
        _transtionView = [self.tabBarController.view.subviews objectAtIndex:0];
        _transtionView.frame = CGRectMake(_transtionView.bounds.origin.x,  _transtionView.bounds.origin.y,  _transtionView.bounds.size.width, _transtionView.bounds.size.height + SafeAreaTureBarHeight);
        self.tabBarController.tabBar.frame = CGRectZero;
    }else{
        _webView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT-SafeAreaTureBarHeight-SafeAreaNavHeight);
        _transtionView = [self.tabBarController.view.subviews objectAtIndex:0];
            _transtionView.frame = CGRectMake(_transtionView.bounds.origin.x, _transtionView.bounds.origin.y,  _transtionView.bounds.size.width, _transtionView.bounds.size.height - SafeAreaTureBarHeight);
        self.tabBarController.tabBar.frame = CGRectMake(0, SCREEN_HEIGHT - SafeAreaTureBarHeight, SCREEN_WIDTH, SafeAreaTureBarHeight);
    }
        self.tabBarController.tabBar.hidden = show;
}

你可能感兴趣的:(隐藏Tabbar 解决该区域点击事件)