iOS目标c用按钮替换uitabbar但按钮没有交互?

Posted

技术标签:

【中文标题】iOS目标c用按钮替换uitabbar但按钮没有交互?【英文标题】:iOS objective c replacing uitabbar with a button but button has no interaction? 【发布时间】:2015-09-09 10:42:02 【问题描述】:

我相信这种情况会很典型,但我无法让它发挥作用。这是我的视图关系:扩展的 UITabBarController (A) -> UINavigationController (B) -> 扩展的 UIViewController 作为根视图控制器 (C) -> 带有 UIButton (E) 的目标视图控制器 (D)。

最初,显示的是一个集合视图的根视图控制器,然后推送到 D,在 D 的初始化期间,在 viewWillAppear 和 viewWillLayoutSubviews 中,我放置了隐藏标签栏 A 并保持 B 的导航栏显示的代码,并且将 D 的视图设置为新的框架高度以确保它可以覆盖全屏,然后将 UIButton E 框架布局到标签栏 A 的框架。

结果是按钮 E 在前一个标签栏的位置正确显示,但它不响应任何手势或 touchupinside 事件。

下面是D的代码:

- (void)viewWillLayoutSubviews
    [self.navigationController.tabBarController.tabBar setHidden:YES];
    [self.view setFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height + self.navigationController.tabBarController.tabBar.frame.size.height)];
    [_button setFrame:CGRectMake(0.0f, screenRect.size.height - buttonHeight - self.navigationController.navigationBar.frame.size.height - [UIApplication sharedApplication].statusBarFrame.size.height, screenRect.size.width, buttonHeight)];
    [self.view addSubview:_button];
    [self.view bringSubviewToFront:_button];

我尝试过使用

[self.view insertSubview:_button atIndex:0]

同样,并检查了调试器中的视图层次结构,除了没有触发交互事件之外,所有 LOOKS 都很好。

感谢您的帮助!

【问题讨论】:

我认为你的层次结构看起来像一个消息应用程序(标签栏控制器 -> 历史记录 -> 你的集合视图(一个视图控制器)&你想在推送时隐藏标签栏? 是的,当我将特定视图推送到导航控制器时,我希望隐藏标签栏。这是有效的,但视图上的按钮在 tabor 的位置是不可点击的。如果我不隐藏标签栏,也不将按钮设置到那个位置,它工作得很好,但这不是我想要的。 【参考方案1】:
youNextViewController.hidesBottomBarWhenPushed=YES;
[self.navigationController pushViewController:youNextViewController animated:YES];

【讨论】:

如果我得到你的问题是真的,这段代码对你有用:) 在一般情况下,我相信您的回答会正确隐藏标签栏,但我发现我没有足够清楚地描述我的问题。我的视图层次结构更复杂,所以我不得不通过调试器仔细检查视图层次结构,找出哪个超级视图框架比预期的小,这将是按钮无法点击的根本原因,因为按钮不在该框架并且无法接收交互事件。谢谢!

以上是关于iOS目标c用按钮替换uitabbar但按钮没有交互?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 凸起的中心标签按钮

iOS - UITabBar 按钮事件

IOS:UITabbar 项目单击一次又一次,它正在减少IOS 7 中的UITabbar 按钮项目大小

有没有办法调整 UITabBar 按钮项的宽度以适应屏幕上超过 5 个按钮?

是否有可能在 iPad 的 UITabBar 中添加按钮?

iOS 10 UITabbar 选择其他选项卡在索引 0 中显示它的标题