iOS中收起键盘的几种方式
在使用UITextField
的时候,我们会和键盘打交道,有时候要求弹出来的键盘类型是数字键盘,有时候要求我们弹出来的是一般的键盘。当我们输入完成的时候,就涉及到在上什么时候收回键盘的事情了。收回键盘分下面的情况来讨论。
大体来说,收起键盘的方法有:
- 让textFiled放弃成为第一响应者(
resignFirstResponder
) - 让view或者子view强制结束编辑状态(
endEditing
)
1.输入完以后用户点击return
后收起键盘。
可以点击
return
收起键盘并不意味着弹出来的键盘一定都有return
这个按键,比如数字键盘类型就没有,UIKeyboardTypeWebSearch
类型的键盘return
键就变成了Go
键,需要注意的是这时候的Go
键相当于return
键。
要想实现点击return
让键盘收起,首先需要设置textField代理,当然还有遵循UITextFieldDelegate
协议:
_textField.delegate = self;
然后实现协议方法- (BOOL)textFieldShouldReturn:(UITextField *)textField;
,当然你也可以在这个方法里 main实现一些需求逻辑,比如判断输入的内容符不符合要求等。
- (BOOL)textFieldShouldReturn:(UITextField *)textField{return [textField resignFirstResponder];
}
2.点击背景后收起键盘
点击背景收起键盘可以实现view的
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
方法,然后执行view的- (BOOL)endEditing:(BOOL)force;
方法。
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{[self.view endEditing:YES]; //实现该方法是需要注意view需要是继承UIControl而来的
}
还有一些比较笨的方法也可以实现达到点击背景后收起键盘的效果,比如:在背景view上面加手势,添加UIButton或者view,然后在对应的点击事件的监听方法中实现resignFirstResponder
或者endEditing
。
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyboardHide:)];
//设置成NO表示当前控件响应后会传播到其他控件上,默认为YES。
tapGestureRecognizer.cancelsTouchesInView = NO;
//将触摸事件添加到view上
[self.view addGestureRecognizer:tapGestureRecognizer];
-(void)keyboardHide:(UITapGestureRecognizer*)tap{ [textFiled resignFirstResponder];
}
3.不用view实现endEditing
的方法
如果说在比较难获取viewController的view时,可以使用下面的方法:
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
或者
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
结尾
在项目中还得根据情况选择使用哪一种方法,我想掌握上面的这些方法差不多就够了,祝大家玩得愉快!如果你觉得我的文章对你有帮助,不妨任性打赏
iOS中收起键盘的几种方式相关推荐
- IOS中延时执行的几种方式的比较
本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...
- ios swift收起键盘
文章目录 1.示例代码 2.键盘管理的第三方框架 1.示例代码 override func touchesBegan(_ touches: Set<UITouch>, with event ...
- IOS收起键盘的几种办法(摘抄自唐巧《iOS开发进阶》)
在UIViewController中收起键盘,除了调用相应控件的resignFirstResponder方法外,还有另外3种方法: 1.重载UIViewController中的touchesBegin ...
- ios多线程开发的常用三种方式
ios多线程开发的常用三种方式 1.NSThread 2.NSOperationQueue 3.GCD NSThread: 创建方式主要有两种: [NSThread detachNewThreadSe ...
- android获取自定义属性,android 自定义控件中获取属性的三种方式(转)
第一种方法,直接设置属性值,通过attrs.getAttributeResourceValue拿到这个属性值. (1)在xml文件中设置属性值 android:layout_width="f ...
- ios页面间传递参数四种方式
ios页面间传递参数四种方式 1.使用SharedApplication,定义一个变量来传递. 2.使用文件,或者NSUserdefault来传递 3.通过一个单例的class来传递 4.通过Dele ...
- 在Windows 10中截取截图的6种方式 简介
在Windows 10中截取截图的6种方式 简介 截图对于不同的目的很重要.它可以用于捕获笔记本电脑上的任何内容的截图.所以,如果你使用Windows 10,你可能不知道如何截图,因为它是比较新的.因 ...
- 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...
- mysql 执行cmd,mysql命令行中执行sql的几种方式总结
1.直接输入sql执行 MySQL> select now(); +---------------------+ | now() | +---------------------+ | 2013 ...
最新文章
- window下使用虚拟机安装Linux操作系统CentOS
- python第三方库中函数调用_Python学习笔记(2)——Python的函数、模块、包和库...
- mysql脚本文件长什么样_在linux下执行mysql脚本文件,内容是创建一个FUNCTION,总是报错,请帮看下原因是什么?多谢...
- Mac OS使用技巧之十六:系统失去响应怎么办?
- if...else 应用(猜幸运数字)
- 夏泽网 中国渔业统计年鉴年鉴资料网
- Android版微信跳一跳小游戏如何利用技术手段达到高分!
- 南开计算机考研难么,我的一点考研心得
- ubuntu 19查看和修改时区
- 3541. 代码查重
- 跟着 Apple 中国学习顶级中文文案排版
- Flex 桌面应用 adl 调试模式运行
- python——正则表达式详解(二)
- tftpd32服务器软件在Windows与linux 下的文件传输
- 模型无关的全局特征依赖分析方法 I ——部分依赖曲线分析与条件依赖曲线分析
- Go语言核心之美 1.2-变量及声明篇
- V部落-微信小程序版博客
- 分布式团队的高效站立会说明书
- Ed2k协议背景介绍及eMule协议的整体架构
- FRP (高性能反向代理应用)
热门文章
- 沧州师范学院计算机科学与技术专业怎么样,沧州师范学院有哪些院系和专业-什么专业比较好...
- 计算机上怎么计算开三次方,怎么用计算器开出三次方,具体怎么操作
- oracle运维系列0:Oracle installClient 安装
- 2016,再见 2017,还请多多指教
- Ui 组件库 (移动端)
- 阿里云com域名价格表、注册券和续费口令
- 【深度学习模型】扩散模型(Diffusion Model)基本原理及代码讲解
- mysql基因测序_基因融合检测数据库介绍
- 动画属性 @keyframes
- 专题:手把手学习硬件基础------13、EMC和ESD