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

时间:2011-11-20 16:17:56

标签: xcode hide uinavigationbar

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

如果有人可以向我提供有关如何执行此操作的详细信息,我会非常感激。

2 个答案:

答案 0 :(得分:21)

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

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

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

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

然后在方法-(void)viewDidLoad {}

中添加以下内容
UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleNavBar:)];
[self.view addGestureRecognizer:gesture];
[gesture release];

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

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

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

答案 1 :(得分:0)

最终,您希望将-setHidden:消息发送到导航栏。最简单的方法是在视图控制器中创建 Outlet Action 。然后,在.xib文件中,将导航栏连接到插座,并将一些按钮(甚至是大屏幕全屏)连接到操作。

  

Outlets和Actions是iOS中反复使用的基本技术   (和Mac)编程,所以如果你不理解它们,最好去阅读   现在起来。每个开始的iOS / Mac编程书都涵盖了这一点   主题与Apple自己的Getting Started guide一样(付费特别   注意配置视图部分。)

在您的操作中,如下所示向插座发送消息:

-(void)myButtonAction:(id)sender{
  [[self myNavigationBarOutlet] setHidden:YES];
}

只要点按按钮,这就会隐藏导航栏。

(假设您的.xib中有一个UINavigationBar,如果您正在使用UINavigationController来管理自己的UINavigationBar)那么这些说明会有所不同/ p>