隐藏tabbar之后在原位置新建View不响应点击事件的方法

本文介绍了在iOS应用中隐藏tabbar后,如何在原tabbar位置创建一个新的视图并确保其上的按钮可以响应点击事件。通常,直接设置hidebarButtonItem为yes可实现跳转后隐藏tabbar,但本场景下需在当前页面操作。作者分享了自研的解决方案,供开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里指的不是跳转页面之后隐藏tabbar,如果是跳转后隐藏直接hidebarButtonItem = yes就搞定,这里是本页面隐藏之后在原tabbar位置新建一个view,并在view上添加按钮,但是接受不到点击事件,在网上看了很多人都遇到这个问题,但是解释的都不够,后来自己摸索了一个方法,拿来分享,欢迎指正。

首先就是两个方法,隐藏和显示tabbar

//隐藏tabbar
- (void)hideTabBar
{
    
  
        if (self.tabBarController.tabBar.hidden == YES)
        {
            return;
        }
        UIView *contentView;
        if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] )
            contentView = [self.tabBarController.view.subviews objectAtIndex:1];
        else
            contentView = [self.tabBarController.view.subviews objectAtIndex:0];
        contentView.frame = CGRectMake(contentView.bounds.origin.x,  contentView.bounds.origin.y,  contentView.bounds.size.width, contentView.bounds.size.height + self.tabBarController.tabBar.frame.size.height);
        
        self.tabBarController.tabBar.hidden = YES;
   

    

    
}
//显示tabbar
- (void)showTabBar

{
    if (self.tabBarController.tabBar.hidden == NO)
    {
        return;
    }
    UIView *contentView;
    if ([[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]])
        
        contentView = [self.tabBarController.view.subviews objectAtIndex:1];
    
    else
        
        contentView = [self.tabBarController.view.subviews objectAtIndex:0];
    contentView.frame = CGRectMake(contentView.bounds.origin.x, contentView.bounds.origin.y,  contentView.bounds.size.width, contentView.bounds.size.height - self.tabBarController.tabBar.frame.size.height);
    self.tabBarController.tabBar.hidden = NO;
    
}
在你需要调用的地方调用这两个函数就可以了,然而重点并不在这里,这些代码百度到处都是,重点是,当你隐藏之后在原位置添加一个VIew但是接受不到点击事件,一开始遇到这个问题我认为是View的交互事件没有打开,因为新建的View可以显示,并没有被遮住,说这么多,一句最简单的代码搞定问题

[self.tabBarController.view addSubview:viewForEidit];
其中viewForEdit是我自己新建的view,初始化过程等就不赘述了。尝试很多方法后,之前一直是把viewForEdit加在self.view上,所以一直无果。这里面的机制我也没有搞清楚,但是就是可以实现。希望大家明白深入一点的可以多指教。

541370008@qq.com


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值