我是iOS开发的新手,我刚刚创建了我的第一个应用程序之一,在我的.xib文件中,我有一个UINavigationBar
,当我点击屏幕的一部分时,我想隐藏/显示由用户(如在照片应用程序中)。我在网上找到了一些片段,但我不知道在哪里以及如何使用它们。
如果有人可以向我提供有关如何执行此操作的详细信息,我会非常感激。
答案 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>