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 に答える