触摸导航栏时隐藏键盘

时间:2013-08-02 12:53:30

标签: ios

我有一个UITabBarController,有四个相关的观点。在其中一个视图中有一个文本视图,仅为navigationbar留出空间:我想要做的是在触摸navigationbar时隐藏键盘。我怎样才能做到这一点?我应该覆盖touchesBegan:的{​​{1}}方法吗?

修改


我发现这样做的最好方法是添加UINavigationBar

UITapGestureRecognizer

调用方法

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

5 个答案:

答案 0 :(得分:2)

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];
        }
    }
}

愿这对你有帮助

答案 1 :(得分:0)

在你的touchesBegan方法中,你可以使用resignFirstResponder来使键盘消失。希望这会有所帮助,为吉姆欢呼。

答案 2 :(得分:0)

未经测试。 将敲击手势添加到UINavigationbar并添加动作以手势以响应响应者。

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

动作:

[Textfield resignfirstresponder]

答案 3 :(得分:0)

//此方法将在导航到其他视图之前调用...

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

//这将在导航到其他屏幕之前重新签名键盘..

我希望这会对你有所帮助。

答案 4 :(得分:0)

您可以使用此快捷扩展名在外部单击时关闭键盘。可能会在导航栏或视图控制器视图上单击该用户。

只需在UIViewController中调用一次 hideKeyboardWhenTappedAround()

<MainStructure>
  <View style={{flex:1}}>
    <Header>.....</Header>
    <AppContainer />

  <Footer>.....</Footer>
 </View>
</MainStructure>;

}