最近在做的项目,大部分是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;
}
网友评论