• iOS隐藏键盘的几种方式


    因为开发中经常要用到textField和textView,在某些情形下隐藏键盘很有必要,而隐藏键盘有多种方式,在合适的场景下用合适的方式隐藏就显得很重要,我也老是记不起来有哪些方法,这里就记录一下,以备查找。

    首先,我想到的也是最常用的,实现UITextFieldDelegate的代理方法:

    - (BOOL)textFieldShouldReturn:(UITextField *)textField
    {   
           	[textField resignFirstResponder];   
    	return YES;
    }

    其次,我想到了点击界面的其他空白区域来隐藏,而这种方式又有多种实现,下面来依次记录一下:

    第一种,是修改控制器的UIView为UIControl,然后设置UIControl的单击事件,并实现之。

    首先设置xib中得UIView的Custom class为UIControl,然后拖拽xib中得UIView拖到.h区中,生成一个Action,事件为touchUpInside,

    - (IBAction)touchView:(id)sender {  
         [self.view endEditing:YES];  
    }

    第二种,不用修改UIView,而是利用手势,给UIView添加一个点击的手势,来控制键盘的隐藏。

    - (void)viewDidLoad  
    {  
        [super viewDidLoad];  
        UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyboardHide)];  
        //设置成NO表示当前控件响应后会传播到其他控件上,默认为YES。  
        tapGestureRecognizer.cancelsTouchesInView = NO;  
        //将触摸事件添加到当前view  
        [self.view addGestureRecognizer:tapGestureRecognizer];  
    }
    - (void)keyboardHide
    {  
        [self.view endEditing:YES]; 
    }

    第三种,比较麻烦点,我只记录个思路,自定义一个UIView,然后实现view的touchesBegan:触摸事件

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{  
        [textFiled resignFirstResponder]; 
        //或者下面这种方式
        [self.view endEditing:YES]; 
    }


    
    总结,其实就是想办法调用这两个方法
    

    1、[view endEditing:YES]  这个方法可以让整个view取消第一响应者,从而让所有控件的键盘隐藏。

    2、[textFiled resignFirstResponder] 这个则是比较常用的让某个textFiled的键盘隐藏。

    当然,还可以自己调整键盘的frame来隐藏,这种方法就显得太麻烦了,而没有必要。


  • 相关阅读:
    自动识别文本中最能体现文本的主题和风格的词汇?试想一下,要找到一本 书中使用最频繁的 50 个词
    语言处理任务 NLTK 模块 功能描述
    mysql group by 去重 分类 求和
    isinstance(object, classinfo) class type(name, bases, dict)
    函数式编程 偏函数 生成器 yield
    .bash_profile vs .bashrc
    sh/bash/csh/Tcsh/ksh/pdksh等shell的区别
    从数据库、页面加载速度角度思考 id设计 sku asin
    线性回归
    Oracle OLAP
  • 原文地址:https://www.cnblogs.com/wanghang/p/6298911.html
Copyright © 2020-2023  润新知