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

Rob*_*egg 5 objective-c uibutton uiview ios

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

我已经查看了解决方案的一些问题和答案.但是大多数都需要子类化.我已经尝试了子类化并重写了HitTest事件,但是即使在我的UIButton子类中也没有调用该方法.

我正在开发iOS 7.1.

任何人都可以对此有所了解,以及如何让按钮响应触摸事件?

编辑

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

在示例应用程序中,我们在第一个选项卡中UIViewController嵌入了一个UITabBarController.这UIViewController是再嵌入一个UINavigationController.从那里,我们将第二个UIViewController推入堆栈.

点击顶部的"隐藏标签栏"按钮即可.隐藏tabBar.它暴露了UIView放置在那里的绿色storyboard,其中一个UIButton连接到ViewControllers实现文件.此按钮根本不会接收任何触摸事件.只要我将按钮移动到TabBar通常占据的空间上方,按钮就会起作用.将其向下移回屏幕底部 - 按钮不再起作用.

似乎苹果已禁止所有触摸事件UITabBar.我想知道这有什么办法吗?

我试过了:

self.tabbar.userInteractionENabled = NO;
Run Code Online (Sandbox Code Playgroud)

这也没有帮助.

也许有一种方法,我们能够覆盖在子类中UITabbarController,当UITabBar隐藏时,允许触摸此规范?

如果有人想要使用示例项目 - 它在我的gitHub上:

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

Gee*_*eet 5

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

在功能

- (IBAction)doneButton:(UIBarButtonItem *)sender
Run Code Online (Sandbox Code Playgroud)

就这样做吧

- (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];



}
Run Code Online (Sandbox Code Playgroud)

self.tabBarController.view是我们的罪魁祸首,不让触摸事件通过,很高兴能够弄明白