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; }