作者:zyl910

  关于隐藏软键盘,网上的办法良莠不齐,大多是通过实现UITextFieldDelegate来隐藏软键盘,该方法代码较多,且在文本框很多的时不好处理。我经过搜索与摸索,找到了最佳的处理办法。

一、隐藏自身软键盘

  当对于有多个UITextField控件都想通过点击“Return”来隐藏自身软键盘的情况,这时的最好办法是使用Did End on Exit事件。在点击软键盘右下角的“Return”按钮后,会触发该事件。
  该事件有一个sender参数表示当前文本框,这样便可以编写一个通用的事件处理方法(.m文件)——

- (IBAction)TextField_DidEndOnExit:(id)sender {// 隐藏键盘.
    [sender resignFirstResponder];
}

  然后在.h文件中填写该方法的声明——

- (IBAction)TextField_DidEndOnExit:(id)sender;

  回到storyboard,并按command+option+enter打开辅助窗口,使辅助窗口显示.h文件。
  选中一个UITextField控件,点击鼠标右键弹出面板,鼠标左键按住Did End on Exit事件旁边的圆圈,然后拖曳到右侧.h文件的TextField_DidEndOnExit方法上,便会建立好事件连接。
  随后按照同样的做法,将其他UITextField控件的Did End on Exit事件也连接到TextField_DidEndOnExit方法。

  运行一下,可发现每个文本框的软键盘都可以通过点击“Return”来隐藏了。

二、点击Return自动转到下个文本框

  当页面中有很多个文本框时,如果每次都需要点文本框激活软键盘、输入后点击Return隐藏软键盘、再点击下一个文本框……这样操作起来太繁琐了。
  于是我们希望能够实现点击Return时能够自动转到下一个文本框。尤其是对于最后一个文本框,希望能够在点击Return时执行下一步操作。

  例如对于登录页面。它上面有 账号文本框(nameTextField)、密码文本框(passTextField)、登录按钮(loginButton)。
  我们希望——点击账号文本框软键盘的Return时跳转到密码文本框,点击密码文本框软键盘的Return时执行登录。
  因为这两个文本框的功能不同,不能像上一节那样写一个TextField_DidEndOnExit做统一处理,而应该分别建立各自的事件处理方法。

  回到storyboard,右击账号文本框(nameTextField)弹出面板,按住Did End on Exit事件旁边的圆圈,然后拖曳到右侧.h文件的空白地方,此时会弹出一个对话框给方法命名。输入名称(nameTextField_DidEndOnExit)后回车确定,便自动生成了该事件方法。
  随后按照同样的做法,为密码文本框(passTextField)的Did End on Exit事件连接方法(passTextField_DidEndOnExit)。
  来到.m文件,填写具体代码——

- (IBAction)nameTextField_DidEndOnExit:(id)sender {// 将焦点移至下一个文本框.
    [self.passTextField becomeFirstResponder];
}- (IBAction)passTextField_DidEndOnExit:(id)sender {// 隐藏键盘.
    [sender resignFirstResponder];// 触发登陆按钮的点击事件.
    [self.loginButton sendActionsForControlEvents:UIControlEventTouchUpInside];
}

  对于账号文本框转密码文本框,不需要隐藏软键盘,只需要调用becomeFirstResponder激活新的文本框就行了。
  对于密码文本框Return后执行登录。因为不再需要显示软键盘,所以还是得调用resignFirstResponder隐藏软键盘,然后触发登录按钮(loginButton)的UIControlEventTouchUpInside事件进行登录。

  运行一下,可发现已经达到我们希望的效果了。点击账号文本框软键盘的Return时跳转到密码文本框,点击密码文本框软键盘的Return时执行登录。
  怎么都是“Return”,转换文本框与执行登录明明是不同的功能?
  于是将账号文本框的Return Key属性设为“Next”,将密码文本框的Return Key属性设为“Done”,使界面与功能一致。

三、轻触背景隐藏软键盘

  只能通过Return关闭软键盘太不灵活了,应该提供轻触背景隐藏软键盘的功能。

  在storyboard,点击背景View,将它的Custom Class设置为UIControl,这样才会出现Touch Down事件。
  右击背景View弹出面板,按住Touch Down事件旁边的圆圈,然后拖曳到右侧.h文件的空白地方建立该事件的处理方法。
  来到.m文件,填写具体代码——

- (IBAction)View_TouchDown:(id)sender {// 发送resignFirstResponder.
    [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
}

转载于:https://www.cnblogs.com/zyl910/archive/2013/03/29/ios_textfield_keyboard.html

[iOS] UITextField隐藏软键盘心得(隐藏自身软键盘、点击Return自动转到下个文本框、轻触背景隐藏软键盘)...相关推荐

  1. android+点击屏幕隐藏键盘,Android点击EditText文本框之外任何地方隐藏键盘的解决办法...

    1,实现方法一: 通过给当前界面布局文件的父layout设置点击事件(相当于给整个Activity设置点击事件),在事件里进行键盘隐藏 android:id="@+id/traceroute ...

  2. java隐含文本框_Linux_文本框中密码的隐藏与显示, HTML文本框中,如果设定为密 - phpStudy...

    文本框中密码的隐藏与显示 HTML文本框中,如果设定为密码框,则输入的值显示为"*",如果在后台管理中,需要相询密码,则无法及时掌握密码值. 使用Javascrtip控制,则能很快 ...

  3. Android点击EditText文本框之外任何地方隐藏键盘的解决办法

    通过给当前界面布局文件的父layout设置点击事件(相当于给整个Activity设置点击事件),在事件里进行键盘隐藏 <LinearLayout xmlns:android="http ...

  4. 文本框焦点事件显示隐藏文本框内容

    效果展示: 代码展示: <!DOCTYPE html> <html><head><meta charset="utf-8">< ...

  5. html之文本框的onkeydown()响应Enter键——键盘事件

    事件目录 常见的jQuery事件 常见的鼠标.键盘事件 很多时候,我们需要在html的输入框中按下回车键(Enter)做模糊查找,那么就可以使用到 onkeydown 事件了. 示例代码: <h ...

  6. iOS UITextField使用全攻略

    //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, ...

  7. 创建两个文本框,一个按钮。第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符;

    创建两个文本框,一个按钮.第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符:第 2 个文本框绑定键事件,敲击键盘 a 字符,在交互窗口中显示 10 个'a'字符:按钮绑定 ...

  8. IOS UITextField

    2019独角兽企业重金招聘Python工程师标准>>> // UITextField的初始化 UITextField textField = [[UITextField alloc] ...

  9. 【UIKit】文本框(UITextField)及键盘遮挡处理和回收

    文本框(UITextField)及键盘遮挡处理和回收 文本框属性 官网文档:UITextField Class Reference 以下都是可以在IB中选择设置的,也可以使用代码编写 placehol ...

最新文章

  1. img 在video上面_HTML,img,video无法铺满屏幕解决方法,同视频做网页背景无法全屏的解决方法...
  2. openstack安装系列问题:window7 64位安装的virtualBox 只能选择32位的系统安装不能选择64位的系统安装...
  3. 网站前中期外链优化少不了这三点!
  4. 维基百科---似然函数
  5. kubernetes1.5即将发布
  6. Java并发编程实战————Executor框架与任务执行
  7. 让网站和APP更具动感的几点建议
  8. 台达plc读取变频器电流案例_PLC模拟量信号如何转换,编程必懂!
  9. Java web 第一天
  10. 苹果手机远程服务器桌面,如何用手机APP远程桌面管理Windows云服务器或电脑
  11. 数学建模系列-预测模型(一)---神经网络模型
  12. 名帖292 张瑞图 行书《论书卷》
  13. 骗子网站--正规网赚系统--www.j9m2.com--诈骗网站
  14. Like What Y ou Like: Knowledge Distill via Neuron Selectivity Transfer(2017)------论文阅读笔记
  15. JAVA(一)依赖注入的简单理解
  16. 欲罢不能 推荐,刷屏时代如何摆脱行为上瘾
  17. pandas 计算累计和及累计占比
  18. 学习笔记与练习 | SQL入门(三)| 复杂一点的查询
  19. meterpreter使用详解
  20. 人人车否认破产称地方经营型模式升级为合伙人模式

热门文章

  1. JZOJ 5939. 【NOIP2018模拟10.30】阻击计划
  2. JZOJ 4161. 于神之怒
  3. JZOJ 4909. 【NOIP2017模拟12.3】李电下棋
  4. c语言实参形参函数调用指针引用 符号实例,C语言实参、形参、函数调用、指针、引用、符号实例.doc...
  5. 字符串拼接数字 java_使用JAVA代码实现字符串的简单拼接
  6. xshell 安装yum_xshell上安装docker
  7. hdu5399(模拟)
  8. 2017年10月08日普及组 蜡烛
  9. POJ 1703 Find them, Catch them(并查集高级应用)
  10. wifi定位算法 java_记一次APP的so层算法逆向(七)