4

我正在尝试在我的 web 视图上实现一个点击手势来隐藏/显示导航栏、标签栏和状态栏。我的导航栏的隐藏/显示工作正常,我可以隐藏状态栏但不能让它重新显示。标签栏项目被隐藏,但栏仍然存在。有人能帮忙吗?

- (void)toggleBars:(UITapGestureRecognizer *)gesture
{   
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
    BOOL statusBarHidden = YES;

    BOOL barsHidden = self.navigationController.navigationBar.hidden;
    [self.navigationController setNavigationBarHidden:!barsHidden animated:YES];

    BOOL tabBarHidden = self.tabBarController.tabBar.hidden;
    [self.tabBarController.tabBar setHidden:!tabBarHidden];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    UIBarButtonItem *systemAction = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showMenu)];
    self.navigationItem.rightBarButtonItem = systemAction;

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(toggleBars:)];
    [webView addGestureRecognizer:singleTap];
    singleTap.delegate = self;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

编辑:看起来标签栏正在隐藏,但我的 webview 并没有填满空白空间。隐藏标签栏时如何让它填充空间?

4

2 回答 2

4

首先,你的状态栏永远不会隐藏,因为你从来没有告诉它。正如所写的那样,您的代码只是告诉状态栏在每次执行时隐藏。

[[UIApplication sharedApplication] setStatusBarHidden:![[UIApplication sharedApplication] isStatusBarHidden] withAnimation:UIStatusBarAnimationSlide];

[self.navigationController setNavigationBarHidden:!self.navigationController.navigationBar.hidden animated:YES];

此外,我不确定为什么您的标签栏没有正确隐藏的详细信息,但我确实找到了以下类别,该类别声称能够使用选项动画隐藏标签栏。

https://github.com/idevsoftware/Cocoa-Touch-Additions/tree/master/UITabBarController_setHidden

于 2013-08-12T18:15:21.297 回答
1

我通过将它添加到我的 toggleBars 方法来隐藏/显示状态栏,但我仍然没有弄清楚为什么标签栏项目隐藏而不是标签栏本身。

if (([UIApplication sharedApplication].statusBarHidden = YES))
    {
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
    }
    else
    {
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
    }
于 2013-08-12T18:44:12.827 回答