检测点击以显示/隐藏UINavigationBar

时间:2009-08-14 15:27:12

标签: iphone cocoa-touch

我是iPhone开发的新手,并没有做任何有趣的事情。 我的视图层次结构如下:

UIView - UIImageView - UIScrollView - CustomView

如何检测用户是否点击了屏幕上的任何位置,以便我可以相应地显示/隐藏导航栏?我不需要在我的CustomView上进行用户交互,但是当用户想要拖动它时,我想忽略UIScrollView上的触摸。

我已经可以使用以下方式以编程方式显示/隐藏我的视图控制器中的导航栏:

[self.navigationController setNavigationBarHidden:YES animated:YES];

提前致谢!

2 个答案:

答案 0 :(得分:16)

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showHideNavbar:)];
[self.view addGestureRecognizer:tapGesture];
[tapGesture release];

-(void) showHideNavbar:(id) sender { // write code to show/hide nav bar here }

这是使用iOS 4上提供的UIGestureRecognizer进行此操作的方法

答案 1 :(得分:5)

您可以使用UIView中的touchesBegan方法来检测点击,因此您必须为viewcontroller的视图设置一个自定义子类UIView,以便您检测点击。然后,您必须使用委托给视图的控制器发送消息,以便隐藏navigationBar

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSUInteger numTaps = [[touches anyObject] tapCount];
    if (numTaps == 1)
    {
        [delegateController tapDidOccur];  
    }
}