隐藏 TabBar 后无法触摸 TabBar 后面的区域

Posted

技术标签:

【中文标题】隐藏 TabBar 后无法触摸 TabBar 后面的区域【英文标题】:After hiding TabBar can't touch on the area behind the TabBar 【发布时间】:2014-08-27 23:17:07 【问题描述】:

我在我的应用程序上使用 TabBarController,在其中一个主视图 (aViewController) 中,我推送另一个控制器 (bViewController),然后使用 self.tabBarController.tabBar.hidden=YES; 隐藏 TabBar;

bViewController 在 tabBar 所在的位置有一个按钮,它没有捕捉到触摸事件。

我试过把按钮放在bViewController的不同位置,tabBar应该在的区域是唯一没有检测到触摸事件的地方。

我尝试在 tabBarController 之外使用 bViewController,它工作正常。 任何帮助将不胜感激。

编辑:

当我按下 aViewController 上的按钮时,我会调用

self.tabBarController.tabBar.hidden=YES;
[self performSegueWithIdentifier:@"aViewToBView" sender:self];

aViewToBview 是在故事板上声明的 push segue

【问题讨论】:

你是模态呈现bViewController还是推送它? 你能发布你的代码吗? 我也遇到了同样的问题,你解决了吗? 无法解决,我只是将按钮放在tabBar区域上方,看起来很难看,但不得不忍受。 【参考方案1】:

由于某种原因,您无法触摸标签栏下方的视图。

但是,如果你隐藏标签栏,然后添加一个子视图,那么该视图可以接收用户交互!

这对我有用:

// Create a button that is at the very bottom of the screen
CGFloat buttonHeight = 45.0f;
UIButton *finishButton = [[UIButton alloc] initWithFrame:CGRectMake(
          0, 
          self.view.frame.size.height - self.tabBarController.tabBar.frame.size.height - buttonHeight,
          self.view.frame.size.width,
          buttonHeight)];
//...more initialization of the button...

//Here is our solution:
[self.tabBarController.view addSubview:finishButton];

【讨论】:

对我来说这不是最好的解决方案,但它确实有效,谢谢。 @gomezluisj 为什么它不是最好的解决方案?你能详细说明一下吗? 以编程方式创建按钮意味着我不能使用故事板的约束,所以我也需要以编程方式设置它们,这很痛苦。 我明白了。您仍然应该能够通过情节提要创建它。但是在运行时,您只需包含将子视图添加到 tabbarcontroller.view 的最后一行 此解决方案对于视图不仅仅位于标签栏框架内的情况没有任何帮助。例如,我正在使用 UITableView 子类,当标签栏被隐藏时,它会延伸到屏幕的末尾;底部是不可触及的。

以上是关于隐藏 TabBar 后无法触摸 TabBar 后面的区域的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中无法摆脱 TabBar 后面的灰色

关于react native tabbar隐藏

iOS进入界面隐藏下方tabbar等bar

没有设置触摸手势,但 tabBar 只响应长按。为啥?

在 iOS 中的 navigationController 堆栈中隐藏 tabBar 时,视图在屏幕上显示后向下移动

tabBar 使 sliderView 无法工作