无法点击""一个隐藏的TabBar

时间:2016-06-23 12:48:21

标签: ios hide uitabbar

我隐藏了我的标签栏:

self.tabBarController.tabBar.hidden = YES;

因为现在有一个黑色的条形图,它曾经是一个黑色的条形图,它是一个UIWebView在顶部(或者它在下面?)那个空的空间。 UIWebView位于UIViewController。我使用约束来做到这一点,默认情况下是这样的:

enter image description here

约束的代码:

if(self.tabBarController.tabBar.hidden){
    self.webviewBottomConstrain.constant = -self.tabBarController.tabBar.frame.size.height;
}else{
    self.webviewBottomConstrain.constant = 0;
}

但是,如果我在TabBar所在的地方点击设备,它将无法执行。就好像那里有一些看不见的东西与标签栏的大小。我也试着以this thread sugests的方式隐藏它。结果仍然相同。

更新:点击不可见的标签栏时,似乎标签栏会识别点击,而不是标签栏下可见的视图

5 个答案:

答案 0 :(得分:4)

self.extendedLayoutIncludesOpaqueBars = YES; 这将解决你的问题

答案 1 :(得分:0)

通过将其隐藏属性设置为NO来隐藏tabBar?尝试将其设置为YES。除非我误解了你要做的事情,否则你的标签栏似乎没有隐藏在那个代码中。

我要检查的另一件事是查看是否为Web视图选中了User Interaction Enabled。如果不是,那么看起来似乎有一些看不见的东西阻止你与你的观点互动。

答案 2 :(得分:0)

好吧,我正在使用非常丑陋的黑客来解决这个问题。我现在以另一种方式隐藏标签栏:

if (shouldShow) {
    self.hidesBottomBarWhenPushed = NO;
    UIViewController *someView = [[UIViewController alloc] init];
    [self.navigationController pushViewController:someView animated:NO];
    [self.navigationController popToViewController:self animated:NO];

} else if (shouldHide) {
    self.hidesBottomBarWhenPushed = YES;
    self.tabBarController.hidesBottomBarWhenPushed = YES;
    self.navigationController.hidesBottomBarWhenPushed = YES;
    UIViewController *someView = [[UIViewController alloc] init];
    [self.navigationController pushViewController:someView animated:NO];
    [self.navigationController popToViewController:self animated:NO];
}

我确实需要随机视图,因为我无法将视图推到自身。

答案 3 :(得分:0)

通过将标签栏移出屏幕底部来隐藏标签栏时,我遇到了同样的问题。我的自定义UITabBarViewController拦截了选项卡栏腾出的区域中的触摸事件,因此,我没有改变选项卡栏的框架以将选项卡栏移到屏幕外,而是扩展了选项卡栏视图控制器的高度,以便选项卡栏仍然已移至屏幕外,但选项卡栏上方的子视图现在填充了该空间。这样可以使子视图接收到触摸。

答案 4 :(得分:0)

您可能会使用视图层次结构工具看到UITabBar不会直接阻止您的点击,但是您当前视图控制器的视图高度不是全屏显示:

Views arrangement with tabbar

因此,由于手指的 y 位置高于视图的 maxY ,因此点击没有响应。

根据标签栏的可见性,这样的代码(在UITabBarController内部)将扩展视图的高度,并且所有点击事件都将正常工作。

xsl:key