iOS开发之解决隐藏tabbar后原位置无法响应点击事件的问题

方法1

[self.tabBarController.tabBar setHidden:YES];

这个方法有问题,虽然tabBar被隐藏了,但是那片区域变成了一片空白,无法被其他视图使用。

方法2

对于navigationController+tabBarController的结构,可以在push下一级的childController之前将childController的hidesBottomBarWhenPushed属性设为YES。

比如,可以在childController的初始化方法中做这件事,代码如下:

  - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
      self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
      if (self) {
          // Custom initialization.
          self.hidesBottomBarWhenPushed = YES;
      }
      return self;
 }

方法3

对于我们在不用push或者并不跳转控制器,只是通过点击事件隐藏标签栏并修改当前控制器中的视图frame到原来标签栏的位置时,比如,可以在使用WebView时,加载下一个页面做这件事,代码如下:

#pragma mark -- UIWebViewDelegate

-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request

navigationType:(UIWebViewNavigationType)navigationType

{   // 1.截取URL地址

    NSString *urlstr = request.URL.absoluteString;

    // 2.判断当前界面是一级界面时

    if ([MainPageArray containsObject:urlstr])

    {   // 1)隐藏返回按钮

        self.isBackButton = NO;

        // 2)显示标签栏

        self.tabBarController.view.frame = CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height);
    }

    else // 3.判断当前界面不是一级界面时

    {   // 1)显示返回按钮

        self.isBackButton = YES;

        // 2)隐藏标签栏

        self.tabBarController.view.frame = CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height+64);

    }

    return YES;

}

 

posted on 2016-08-23 14:06  程序“猿”  阅读(852)  评论(0编辑  收藏  举报

导航