现在的位置: 首页 > 综合 > 正文

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

2018年09月10日 ⁄ 综合 ⁄ 共 1446字 ⁄ 字号 评论关闭

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

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

代码如下:

- (void)viewDidLoad

{

    [super
viewDidLoad];

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

    

    self.resultTextView.editable=NO;

    

    [self
setUpForDismissKeyboard];


- (void)setUpForDismissKeyboard {

    NSNotificationCenter *nc = [NSNotificationCenter
defaultCenter];

    UITapGestureRecognizer *singleTapGR =

    [[UITapGestureRecognizer
alloc]
initWithTarget:self

                                           
action:@selector(tapAnywhereToDismissKeyboard:)];

    NSOperationQueue *mainQuene =[NSOperationQueue
mainQueue];

    [nc addObserverForName:UIKeyboardWillShowNotification

                   
object:nil

                    
queue:mainQuene

               
usingBlock:^(NSNotification *note){

                    [self.view
addGestureRecognizer:singleTapGR];

                }];

    [nc addObserverForName:UIKeyboardWillHideNotification

                   
object:nil

                    
queue:mainQuene

               
usingBlock:^(NSNotification *note){

                    [self.view
removeGestureRecognizer:singleTapGR];

                }];

}

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

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

    [self.view
endEditing:YES];

}

转载自:http://kevin-wu.net/ios-tap-anywhere-to-hide-keyboard/
转载后,虽然自己有一些地方不太懂,需要对其中用的几个类进行研究下,不要只是对这个方法记住,要理解。

抱歉!评论已关闭.