一、使用软键盘的 done 键隐藏键盘
出发软键盘隐藏最常用的事件是文本框的 did end on exit,它在用户按软键盘中的 done 键时发生。选中一个uitextfield控件,点击鼠标右键弹出面板,鼠标左键按住 did end on exit 事件旁边的圆圈,然后拖曳到右侧 .h 文件中,命名为 closethekeyboard,在 m 文件中具体实现如下图所示(此处同时显示 .h 文件与 .m 文件):
当页面中有很多个文本框时,如果每次都需要点文本框激活软键盘、输入后点击return隐藏软键盘、再点击下一个文本框……这样操作起来太繁琐了。 于是我们希望能够实现点击return时能够自动转到下一个文本框。尤其是对于最后一个文本框,希望能够在点击return时执行下一步操作。
例如对于登录页面。它上面有账号文本框(nametextfield)、密码文本框(passtextfield)、登录按钮(loginbtn)。
我们希望——点击账号文本框软键盘的return时跳转到密码文本框,点击密码文本框软键盘的return时执行登录。
因为这两个文本框的功能不同,不能像上一节那样写一个closethekeyboard做统一处理,而应该分别建立各自的事件处理方法。
回到storyboard,右击账号文本框弹出面板,按住did end on exit事件旁边的圆圈,然后拖曳到右侧.h文件的空白地方,此时会弹出一个对话框给方法命名。输入名称 (closethekeyboard)后回车确定,便自动生成了该事件方法。
随后按照同样的做法,为密码文本框(passtextfield)的did end on exit事件连接方法(passwordtextfield)。
对于账号文本框转密码文本框,不需要隐藏软键盘,只需要调用becomefirstresponder激活新的文本框就行了。
对于密码文本框return后执行登录。因为不再需要显示软键盘,所以还是得调用resignfirstresponder隐藏软键盘,然后触发登录按钮(loginbtn)的uicontroleventtouchupinside事件进行登录。
运行一下,可发现已经达到我们希望的效果了。点击账号文本框软键盘的return时跳转到密码文本框,点击密码文本框软键盘的return时执行登录。
怎么都是“return”,转换文本框与执行登录明明是不同的功能?
于是将账号文本框的return key属性设为“next”,将密码文本框的return key属性设为“done”,使界面与功能一致。
二、轻触背景隐藏软键盘(touch down事件触发)
在storyboard,点击背景view,将它的custom class设置为uicontrol,这样才会出现touch down事件。右击背景view弹出面板,按住touch down事件旁边的圆圈,然后拖曳到右侧.h文件的空白地方建立该事件的处理方法。
三、轻触背景隐藏软键盘(通过背景透明大按钮触发)
将视图库中的 button 控件拖动到设计界面,将 button 控件的大小进行调整,使其可以覆盖整个设计界面。选择菜单栏中的editor|arrange|send to back 命令,将 button 控件放在所有控件的后面。将 button 控件的标题双击进行删除,将按钮与 .h 文件进行 hidekeyboard 动作关联,将用户设计界面的文本框控件与插座变量 mytextfield 进行关联。 具体代码如下图:
四、总结
以上就是自身总结的ios隐藏软键盘的三种方法,后续会陆续整理一些其他技巧与方法,感兴趣的朋友们可以继续关注服务器之家。