九十三、编写 代码 隐藏 iPhone键盘

本文指导如何在iOS应用程序中实现自定义键盘隐藏功能,通过修改视图类型和编写特定措施,使得用户在触摸文本框外区域时,键盘能够自动隐藏。包括创建应用程序、界面布局、代码实现及测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当要求  用户  在iOS应用程序中  输入  数据时,比如  用户  触摸  文本框  或者  文本视图后,iPhone键盘  会自动出现  在屏幕上。根据  我们使用iPhone的经验,当用户  在文本框  或者  文本视图中  输入完  内容  并且  触摸  文本框  或  文本视图边界以外的区域后,iPhone键盘  会自动  隐藏起来。但是  在上一篇博文中的iOS应用程序里  你  会发现  无论  你  怎样触摸  文本框边界以外的区域,iPhone键盘  都不会自动  隐藏起来。事实上  开发者  需要编写  一些代码  来实现  隐藏iPhone键盘的功能。

创建  应用程序

我们  先启动  Xcode,然后  创建  一个新的Single View Application(单视图应用程序),接着  将  产品名称  和  物件类型名称前缀  都设定为  hideKeyboard。创建好  应用程序过后,我们  点击  hideKeyboardViewController.xib这个文件  将  用户界面  载入  界面创建器。接着  我们  从物件库中  拖  一个Text Field(文本框)物件  放  到视图里你认为美观的位置。接着  我们  需要创建  一个UITextField(文本框)类型的物件  并且  使  其  包含  在每个hideKeyboardViewController类型的物件当中。我们  点击  hideKeyboardViewController.h这个文件  并且  将  其  修改成  下面这样:

这样过后  每个hideKeyboardViewController类型的物件  都包含  一个UITextField类型的物件myTextField。接着  我们  需要生成  myTextField  和  setMyTextField:这两相措施,于是  我们  在 hideKeyboardViewController.m这个文件当中的@implementation命令后面  加上  这行语句:

然后  我们  需要将  hideKeyboardViewController类型的物件所包含的myTextField这个物件  与  hideKeyboardViewController.xib这个文件中的文本框物件:

Objects,View,Text Field

连接起来。具体的方法  在这里  就不再赘述了。

在用户  触摸  文本框边界以外的区域后  隐藏  键盘

接下来  我们  要建立  隐藏键盘的机制,这  需要  在用户  触发  某项事件后  执行  某项措施  来办到。我们  先编写  一项适用于hideKeyboardViewController这类物件的措施backgroundTouched:。首先  在hideKeyboardViewController.h这个文件中的@end命名之前  添加  这行语句:

并且  在hideKeyboardViewController.m这个文件  添加  backgroundTouched:这项措施的具体内容:

编写好  backgroundTouched:这项措施后  我们  必须确保  用户  在触摸  文本框边界以外的区域后  这项措施  能够得到  执行。在默认的情况下  文本框边界以外的区域  属于  视图,也就是  UIView类型的物件,所以  如果  用户  触摸  文本框边界以外的区域,那么  被触摸的物件  就是  UIView类型的物件。不幸的  是  单纯的UIView类型物件  无法  在用户  触摸后  触发  任何事件。于是  我们  必须把  hideKeyboardViewController.xib这个文件中的视图物件  由UIView类型  修改为  UIControl类型。我们  按住  键盘上的control键  用  鼠标  点击  下面这个面板中的View图标:

Placeholders,File's Owner,First Responder

然后  我们  会看到  这样的对话框:

Referencing Outlets

从这个对话框中  我们  可以看到  hideKeyboardViewController.xib这个文件中的视图物件View  与  每个hideKeyboardViewController类型物件所包含的view这个物件  属于  同一物件。点击  View这个视图物件后  再  找到  Xcode主窗口右边面板中的连接身份查看器:

Custom Class

在这里  我们  可以看到  View这个视图物件  属于  UIView类型。我们  点击  这里的倒三角后  会弹出  一个下拉菜单,在下来菜单当中  我们  选择  UIControl:

Custom Class,UIControl

从而  将  hideKeyboardViewController.xib这个文件中的视图物件View  由UIView类型  改为了  UIControl类型。当然  UIControl类型的物件  也是  包含  在UIView类型当中的。

现在  还是  选择  视图物件View,我们  在Xcode主窗口右边面板中的连接查看器当中  可以看到  用户  对这时的视图物件View  可以触发  下面这些事件了:

Connections Inspector,Sent Events

我们  点击  Touch Down这项事件右端的灰色小圆圈  不放,将  鼠标  一直  拖  到File’s Owner图标:

Sent Events,File's Owner

然后  松开  鼠标,在弹出的菜单中  选择  我们已经编写好的backgroundTouched:这项措施:

File's Owner

最后  我们  编译  并且  运行  这个应用程序。在这个应用程序当中  我们  点击  文本框后,iPhone键盘  就会自动  弹出来,然后  点击  文本框以外的区域,iPhone键盘  就会隐藏起来。

在backgroundTouched:这项措施当中  我们  对文本框  采取了  resignFirstResponder这项措施,这项措施  能使  iPhone键盘  隐藏起来;与此相反,如果  我们  对文本框  采取becomeFirstResponder这项措施,效果  就跟  我们用手指触摸文本框  是  一样的,那就是  使  iPhone键盘  弹出来。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值