触摸导航栏时隐藏键盘

问题描述:

我有一个UITabBarController与四个相关的意见。在其中一个视图中,有一个文本视图只为navigationbar留下空间:我想要做的是在navigationbar被触摸时隐藏键盘。我怎样才能做到这一点?我应该重写UINavigationBartouchesBegan:方法吗?触摸导航栏时隐藏键盘

编辑


我发现这样做是增加了UITapGestureRecognizer

UITapGestureRecognizer* tapRecon = [[UITapGestureRecognizer alloc] 
            initWithTarget:self action:@selector(navigationBarTap:)]; 
tapRecon.numberOfTapsRequired = 1; 
[self.navigationController.navigationBar addGestureRecognizer:tapRecon]; 

它调用方法

- (void)navigationBarTap:(UIGestureRecognizer*)recognizer { 
    [self.view endEditing:YES]; 
} 
+0

你发现你的触摸? – iPatel

UITapGestureRecognizer* tapRecon = [[UITapGestureRecognizer alloc] 
            initWithTarget:self action:@selector(navigationBarTap:)]; 
tapRecon.numberOfTapsRequired = 1; 
[self.navigationController.navigationBar addGestureRecognizer:tapRecon]; 


- (void)navigationBarTap:(UIGestureRecognizer*)recognizer { 
    [self.view endEditing:YES]; 

    // OR 

    for (id view in self.view.subviews) { 
     if ([view isKindOfClass:[UITextView class]] || [view isKindOfClass:[UITextField class]]) { 
      [view resignFirstResponder]; 
     } 
    } 
} 

也许这将帮助ü

+0

正是我在找什么。谢谢,完美的作品。 –

+0

我的荣幸,我可以帮助别人。 – Warewolf

在你可以在你的touchesBegan方法的最佳途径resignFirstResponder t o使键盘消失。希望这会有所帮助,欢呼吉姆。

未经测试。 将触控手势添加到UINavigationbar,并执行姿势以响应应答者的动作。

UITapGestureRecognizer *gestureRecognizer=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideKeyboard)]; 
    gestureRecognizer.numberOfTapsRequired=1; 
    gestureRecognizer.cancelsTouchesInView = NO; 
    [UInavigationbar addGestureRecognizer:gestureRecognizer]; 
    [gestureRecognizer release]; 

操作:

[Textfield resignfirstresponder] 

//此方法导航到其他视图之前会打电话......

-(void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:YES]; 
    [yourTextField resignFirstResponder]; 
} 

//这将导航到其他屏幕前辞职键盘..

我希望这会帮助你。