IOS开发中让点击屏幕任何地方可以隐藏键盘的方法

来源:互联网 发布:制作电子音乐的软件 编辑:程序博客网 时间:2024/06/12 15:54

在iOS开发中,对UITextField进行编辑的时候键盘会自己弹出来。在编辑完成的时候,需要将键盘隐藏掉。隐藏键盘有很多种实现方法,最常见的是把TextField的firstResponder resign掉。即[textField resignFirstResponder]。本文介绍的是如何在键盘显示的时候,点击屏幕除了键盘以外的任何地方,将键盘隐藏。

基本思想如下:
1. 在ViewController载入的时候,将键盘显示和消失的Notification添加到self.view里。
2. 分别在键盘显示和消失时添加和删除TapGestureRecognizer

代码如下:

- (void)viewDidLoad

{

    [superviewDidLoad];

    // Do any additional setup after loading the view from its nib.

    

    self.resultTextView.editable=NO;

    

    [selfsetUpForDismissKeyboard];


- (void)setUpForDismissKeyboard {

    NSNotificationCenter *nc = [NSNotificationCenterdefaultCenter];

    UITapGestureRecognizer *singleTapGR =

    [[UITapGestureRecognizeralloc] initWithTarget:self

                                           action:@selector(tapAnywhereToDismissKeyboard:)];

    NSOperationQueue *mainQuene =[NSOperationQueuemainQueue];

    [nc addObserverForName:UIKeyboardWillShowNotification

                   object:nil

                    queue:mainQuene

               usingBlock:^(NSNotification *note){

                    [self.viewaddGestureRecognizer:singleTapGR];

                }];

    [nc addObserverForName:UIKeyboardWillHideNotification

                   object:nil

                    queue:mainQuene

               usingBlock:^(NSNotification *note){

                    [self.viewremoveGestureRecognizer:singleTapGR];

                }];

}


- (void)tapAnywhereToDismissKeyboard:(UIGestureRecognizer *)gestureRecognizer {

    //method会将self.view里所有的subviewfirst responderresign

    [self.viewendEditing:YES];

}

转载自:http://kevin-wu.net/ios-tap-anywhere-to-hide-keyboard/

转载后,虽然自己有一些地方不太懂,需要对其中用的几个类进行研究下,不要只是对这个方法记住,要理解。

0 0
原创粉丝点击