点击屏幕时隐藏/取消隐藏UINavigationbar

Edo*_*rdo 4 xcode hide uinavigationbar

我是iOS开发的新手,我刚创建了我的第一个应用程序之一,在我的.xib文件中我有一个UINavigationBar我想隐藏/显示的时候用户点击屏幕的一部分(比如照片中)应用程序).我在网上找到了一些片段,但我不知道在哪里以及如何使用它们.

如果有人能给我详细的信息,我会非常感激.

Jan*_*ano 21

在UIViewController中的任何位置添加此toggle方法.这隐藏在第一次点击并在第二次点击时再次显示.

- (void)toggleNavBar:(UITapGestureRecognizer *)gesture {
    BOOL barsHidden = self.navigationController.navigationBar.hidden;
    [self.navigationController setNavigationBarHidden:!barsHidden animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

如果没有导航控制器,请将导航栏与IBOutlet链接并替换为

- (void)toggleNavBar:(UITapGestureRecognizer *)gesture {
    BOOL barsHidden = self.navBar.hidden;
    self.navBar.hidden = !barsHidden;
}
Run Code Online (Sandbox Code Playgroud)

然后在方法中添加以下内容 -(void)viewDidLoad {}

UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleNavBar:)];
[self.view addGestureRecognizer:gesture];
[gesture release];
Run Code Online (Sandbox Code Playgroud)

如果您要点击的视图是UIWebViewController,则必须将协议添加到视图控制器并将其设置为委托,gesture.delegate = self;然后添加以下内容:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

这是必需的,因为UIWebViewController已经实现了自己的手势识别器.