iOS关闭编辑框的键盘

在 iOS 程序中当想要在文本框中输入数据,轻触文本框会打开键盘。对于 iPad 程序,其键盘有一个按钮可以用来关闭键盘,但是 iPhone 程序中的键盘却没有这样的按钮,不过我们可以采取一些方法关闭它。例如,我们可以实现按下 Rerun (有时也是 Done、Research 等)键关闭键盘,或者,更人性化的,轻触背景关闭键盘。

1、首先讲一下按下Return键关闭键盘。

当按下键盘的 Return 键,会产生一个 Did End On Exit 事件,此时,我们告诉文本框要放弃控件,于是键盘就消失了。

假设,我们已经创建了一个 Single View Application ,并打开 ViewController.xib 文件,在 View 上拖上去了三个 Text Field ,然后,我们把这三个文本框映射到 ViewController.h 中,名称依次是 firstField、secondField 以及 thirdField 。如下图:

在这个基础上,实现轻触 Return 关闭键盘,步骤为:

(1)在 ViewController.h 中声明一个方法:

- (IBAction)textFiledReturnEditing:(id)sender;

(2)在 ViewController.m 中实现这个方法:

-(IBAction)textFiledReturnEditing:(id)sender {
    [sender resignFirstResponder];
}

所谓 First Responder 指的就是用户当前正在与之交互的控件。当用户使用键盘时,First Responder 就是这个键盘,resignFirstResponder 方法,顾名思义,就是放弃 First Responder 。

(3)让这三个文本框都映射到 textFiledReturnEditing 方法,不过此时的事件应当是 Did End On Exit ,具体操作是:

打开 Assistant Editor  ,左边打开 ViewController.xib ,右边打开 ViewController.h ,在 Xcode 最右边打开 Connector Inspector ,然后在 View 中选择第一个文本框,在 Connector Inspector 中找到 Did End On Exit ,从它右边的圆圈中拉出映射线,映射到 ViewController.h 的 textFiledReturnEditing 方法,如下图:

给其他两个文本框进行同样的操作。现在,已经实现了轻触 Return 键关闭键盘。

2、下面介绍更人性化的方法,轻触背景关闭键盘。

跟上面的步骤差不多,首先定义一个方法,然后实现这个方法,接下来将指定的控件映射到这个方法,并选择好所触发的事件。不同的是,这次我们要选择的控件不是上边的文本框,而是视图 View 本身。

(1)在 ViewController.h 文件中添加方法声明代码:

- (IBAction)backgroundTap:(id)sender;

(2)在ViewController.m中实现这个方法:

- (IBAction)backgroundTap:(id)sender {
    [firstField resignFirstResponder];
    [secondField resignFirstResponder];
    [thirdField resignFirstResponder];
}

需要说明的是,[firstField resignFirstResponder];表示,如果firstField有FirstResponder的话就放弃它,我们不用先判断firstField是否有,这条语句完全正确。

(3)让 View 映射到这个方法,不过事先,我们先要改变 View 的类型。

打开xib,选中 View ,打开 Identity Inspector ,在 class 中选择 UIControl :

(4)打开Assistant Editor ,左边打开 ViewController.xib ,右边打开 ViewController.h ,在Xcode最右边打开 Connector Inspector ,在 ViewController.xib 中选择 Control ,在 Connector Inspector 中找到 Touch Down ,从它右边的圆圈中拉出映射线,映射到 ViewController.h 的 backgroundTap 方法,如下图:

好了,可以运行下看看效果了:

      

打开键盘之后,在背景区域点击一下,键盘就会向下收起来。

iOS关闭编辑框的键盘

时间: 2024-08-03 15:26:38

iOS关闭编辑框的键盘的相关文章

iOS开发 编辑框被系统弹出的软键盘遮挡问题

我们在开发注冊界面的时候,最后几个注冊条件经常easy被系统弹出的键盘遮挡,例如以下图: 能够看见,邮箱条件被遮挡掉了,怎么解决呢?我是通过UITextField的代理加计算偏移量: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.emailTextField.delegate = self; } - (

IOS 关闭键盘 退出键盘 的5种方式(转)

IOS 关闭键盘 退出键盘 的5种方式 转自“http://blog.csdn.net/w88193363/article/details/24423635” 分类: iphone2014-04-24 17:03 2197人阅读 评论(0) 收藏 举报 1.点击编辑区以外的地方(UIView) 2.点击编辑区域以外的地方(UIControl) 3.使用制作收起键盘的按钮 4.使用判断输入字元 5.关于键盘遮蔽的问题 1,点击编辑区以外的地方(UIView) 这是一种很直觉的方法,当不再需要使用虚

处理UIScrollView中的编辑框被弹出键盘遮挡的问题

当UIScrollView中的某一行存在编辑框时,点击编辑框,弹出的键盘有可能遮挡住编辑框,造成体验效果很不好.解决的方法很简单,就是将UIScrollView的内容和UIScrollView容器的内边距(准确来说是底边距)增加正好是键盘高度的距离,ios系统会将选中的行重新定位,位置正好是距离窗口底边相同距离的地方,当然,键盘缩回去的时候注意要把内边距再设置回来.涉及到的最主要的函数就是UIScrollView的setContentInset函数. 首先,要在程序开始的地方注册键盘弹出和缩回的

微信公众号弹出框在IOS最新系统中点击键盘上的“完成”导致事件无法触发问题

微信公众号弹出框在IOS最新系统中点击键盘上的"完成"导致事件无法触发问题 问题描述 微信公众号中有项功能是弹框模态框,输入信息后保存操作.但是在IOS系统中发现,当输入内容后,点击键盘上的"完成"后,再点击"提交"无反应:跳过"完成"直接点击"提交"就可以正常保存 问题原因 当键盘弹出后,会将body向上弹起:但是点击"完成"后并没有将body拉回,导致点击事件不在body内而无法触发

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro

iOS开发几种隐藏键盘方法

摘要:iOS开发里键盘是经常需要打交道的地方,下面为大家带来几种隐藏键盘的方法. 一.隐藏自身软键盘 当对于有多个UITextField控件都想通过点击"Return"来隐藏自身软键盘的情况,这时的最好办法是使用Did End on Exit事件.在点击软键盘右下角的"Return"按钮后,会触发该事件. 该事件有一个sender参数表示当前文本框,这样便可以编写一个通用的事件处理方法(.m文件). 1 - (IBAction)TextField_DidEndOnE

第9章 子窗口控件_9.4-9.6滚动条类、编辑框类、列表框类

9.4 滚动条类 9.4.1 滚动条控件 (1)窗口滚动条与滚动条控件的比较 窗口滚动条 滚动条控件 消息 发送WM_VSCROLL.WM_HSCROLL消息.不发送WM_COMMAND消息.wParam参数的意义是一样的.lParam:当消息来自窗口滚动条时为NULL,来自滚动条控件时为滚动条的句柄. 宽度或高度 固定大小 //水平滚动条高度 GetSysMetrics(SM_CYHSCROLL); //垂直滚动条宽度 GetSysMetrics(SM_CYVSCROLL) 1.大小.位置均可

一个简单的记事本编辑框的实现以及搜集的一些窗口风格的预定义

这是一个简单的记事本的窗口过程 1 WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM 2 3 LOCAL winRect:RECT 4 LOCAL editWidth:DWORD 5 LOCAL editHeight:DWORD 6 7 .IF uMsg==WM_DESTROY 8 invoke PostQuitMessage,NULL 9 .ELSEIF uMsg==WM_CREATE 10 ;创建一个编辑框 11

自定义searchview的编辑框,搜索按钮,删除按钮,光标等

多说无益,直接上代码. <pre name="code" class="java"><span style="white-space:pre"> </span> Class<?> argClass=mSearchView.getClass(); //指定某个私有属性 Field mSearchHintIconField = argClass.getDeclaredField("mSearc