如何在屏幕顶部触摸显示导航栏?

时间:2012-06-12 05:29:30

标签: ios uinavigationcontroller uinavigationbar

我想要做的是首先隐藏导航栏,然后如果用户触摸屏幕的顶部(它应该在哪里),导航栏将显示大约1秒或2秒并消失。

我尝试添加一个与背景颜色相同的按钮,然后触摸时显示导航栏,但这似乎不起作用。

另外,我如何进行演示,以便向用户显示此功能?谢谢!

2 个答案:

答案 0 :(得分:2)

首先隐藏app delegate中的导航栏。然后进入要添加触摸事件的视图控制器,并使用以下两种方法:

  • (void)touchesBegan:(NSSet *)触及withEvent:(UIEvent *)事件

{

//mouseSwiped = NO;
CGPoint touchPoint;
//CGPoint touchPointNavigationBar;
UITouch *touch = [touches anyObject];
touchPoint=[touch locationInView:self.view];
if (self.navigationController.navigationBarHidden==YES) {
    if (touchPoint.y<50) {
        self.navigationController.navigationBarHidden=NO;
        timer=[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(hideNavigationBar) userInfo:nil repeats:NO];  
        [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
    }
}

}

- (无效)hideNavigationBar

{

self.navigationController.navigationBarHidden=YES;
if ([timer isValid]) {
    [timer invalidate];
    return;
}

}

答案 1 :(得分:1)

这是获得输出的方法之一。我逐行解释这个代码,这将对你有所帮助。

1]

在视图顶部添加一个按钮,并将任何透明背景图像添加到该按钮 并在viewDidLoad中写下 self.navigationController.navigationBarHidden = YES;

//这将隐藏您的导航栏,现在您可以创建自己的自定义导航栏。

2]

现在在xib中使用sepatare UIView,将其命名为view2并与相应的IBOutlet连接。

获取相应的IBOutlets和IBAction以及两个函数,然后连接到视图和按钮。

  

以下代码进入.h文件&gt;&gt;&gt;&gt;&gt;

     
    

IBOutlet UIButton * btnHideNShow; //将其连接到按钮

         

IBOutlet UIView * viewTemp; //将此连接到View

         

- (IBAction为)btnHideNShowAction:(ID)发送者; //将其连接到Button

         

- (无效)FUN1;

         

- (无效)FUN2;

  

3]

  
    

现在,下面的代码进入.m文件&gt;&gt;&gt;&gt;

  

- (IBAction为)btnHideNShowAction:(ID)发送方{

btnHideNShow.hidden = YES;
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(fun1) userInfo:nil repeats:NO];

}

- (无效)FUN1 {

viewTemp.frame = CGRectMake(0, 0, 320, 59);
[self.view addSubview:viewTemp];


[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(fun2) userInfo:nil repeats:NO];

}

- (无效)FUN2 {

[viewTemp removeFromSuperview];
btnHideNShow.hidden = NO;

}

  

&GT;   您可以根据自己的要求自定义此视图。