gpt4 book ai didi

ios - 将 UIButton 放置在与 UITabBar 相同的空间中(隐藏时)

转载 作者:可可西里 更新时间:2023-11-01 04:22:15 26 4
gpt4 key购买 nike

我有一个正在开发的基于 UITabBarController 的应用程序。在我的一个屏幕设计中,我需要隐藏标签栏(我使用 UIViewsetHidden 方法)然后我放置了一个 UIView,其中 tabBar 通常会添加一个 UIButtonUIView。但是,当点击按钮时,我没有得到任何回应。该按钮不接收任何触摸事件。

我查看了一些 SO 问题和解决方案的答案。然而,它们中的大多数都需要子类化。我已经尝试子类化和覆盖 HitTest 事件,但是即使在我的 UIButton 子类中也没有调用该方法。

我正在 iOS 7.1 上开发。

谁能阐明这一点以及如何让按钮响应触摸事件?

编辑

我自己和@Geet 更仔细地研究了这个问题。似乎与 UITabBar 放置在同一空间的任何东西都不会接收触摸事件。作为测试,我用很少的代码创建了一个新项目,它复制了我原来的项目设置。

在示例应用程序中,我们将一个 UIViewController 嵌入到 UITabBarController 中作为第一个选项卡。 UIViewController 然后嵌入到 UINavigationController 中。从那里,我们将第二个 UIViewController 压入堆栈。

点击顶部的“隐藏标签栏”按钮就可以做到这一点。隐藏选项卡栏。它公开了放置在 storyboard 中的绿色 UIView,以及连接到 ViewControllersUIButton > 实现文件。此按钮根本不接收任何触摸事件。只要我将按钮移到 TabBar 通常占据的空间上方,该按钮就会起作用。将其向下移回屏幕底部 - 按钮不再有效。

Apple 似乎禁止了UITabBar 下的所有触摸事件。我想知道是否有办法解决这个问题?

我试过:

self.tabbar.userInteractionENabled = NO;

这也没有帮助。

也许我们可以在 UITabbarController 的子类中重写该方法,当 UITabBar 隐藏时,该方法允许在此规范中进行触摸?

如果有人想玩这个示例项目 - 它在我的 gitHub 上:

https://github.com/TanderZA/UIButton-in-UITabbar-Space

最佳答案

Tander 我终于弄明白了,按钮没有响应,因为它没有接收到我们的触摸事件,你看在我们的 Storyboard中,View 没有连接到 viewController,因此当我以编程方式将按钮添加到 View 时它永远不会响应,一条简单的线解决了这个问题

在函数中

- (IBAction)doneButton:(UIBarButtonItem *)sender

就这样

- (IBAction)doneButton:(UIBarButtonItem *)sender
{
/* Will hide or unhide the tabBar */

self.tabBarController.tabBar.hidden=YES;
[self.tabBarController setTabBarItem:nil];

UIButton *butt=[UIButton buttonWithType:UIButtonTypeCustom];
butt.backgroundColor=[UIColor redColor];
butt.frame=CGRectMake(160, 530, 93, 40);
[butt addTarget:self action:@selector(testButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.tabBarController.view addSubview:butt];



}

self.tabBarController.view 是我们的罪魁祸首,不让触摸事件通过,很高兴弄清楚了

关于ios - 将 UIButton 放置在与 UITabBar 相同的空间中(隐藏时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24990362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com