1、点击键盘上的Done按钮来关闭键盘

 当用户按下Done按钮时,将生成一个Did End On Exit事件;

 在项目导航中,建立一个ViewController,最好加上一个前缀,添加一行蓝色标注的代码,如下所示:

android 键盘隐藏后popupwindow位置回复 键盘隐藏了_关闭键盘

在YueViewController.m底部(@end之前)添加以下操作方法:

android 键盘隐藏后popupwindow位置回复 键盘隐藏了_字段_02

在导航项目中选择YueViewController.xib,点击Name文本字段,找到连接检查器(可通过快捷键打开)并打开,从Did End On Exit旁边的圆圈拖向File's Owner 图标,将其关联到textFieldDoneEditing:操作,然后运行,在模拟器上的textField文字框内输入内容,之后出现键盘,点击键盘上的Done按钮,即可关闭键盘。

与此类似,可以对键盘上的return等键进行方法关联,方法与上述方法基本相同。


2、通过触摸背景关闭键盘

     通过触摸屏幕上的任何一点,即可关闭键盘。

    使用Interface Builder,可以更改view所指向的对象类,将它的底层类由UIView更改为UIControl。

    因为UIControl是UIView的子类,所以非常适合用于将view属性连接到UIControl实例。

   在项目导航中创建一个YueViewController类,在YueViewController.h中添加一个方法,如下所示:

android 键盘隐藏后popupwindow位置回复 键盘隐藏了_隐藏_03

在YueViewController.m中添加方法的实现代码

android 键盘隐藏后popupwindow位置回复 键盘隐藏了_隐藏_04

该方法只是简单地告诉两个文本字段取消第一响应者状态。

打开YueViewController.xib,选中View,打开其对应的身份检查器,在标有Class的字段中,将UIView改为UIControl(UIControl为UIView的子类),按下return提交修改。打开连接检查器,从Touch Down事件拖到File' Owner图标,然后选择backgroundTap:操作。

运行程序,即可通过单击无活动控件的区域关闭键盘。


3、使用委托UITextFieldDelegate中的方法textFieldShouldReturn:来关闭屏幕键盘。


    在YueViewController.h中,增加一个UITextFieldDelegate协议,然后在YueViewController.m中设置委托,如下所示:




android 键盘隐藏后popupwindow位置回复 键盘隐藏了_隐藏_05



实现的协议方法代码如下:



android 键盘隐藏后popupwindow位置回复 键盘隐藏了_隐藏_05

- (BOOL)textFieldShouldReturn:(UITextField
{
    [textField resignFirstResponder];
    return  YES;
}


运行程序,在TextField文框内输入内容,点击屏幕键盘上的return键,即可关闭屏幕键盘。


4.通过手势识别器UIGestureRecognizer来实现键盘的隐藏


具体方法如下,在HHLViewController.m中的viewDidLoad函数中添加如下代码


- (void)viewDidLoad 

 

  { 

 
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(tapHiddenkeyboard:)];
addGestureRecognizer:tapGestureRecognizer];
  
 

  }


然后在HHLViewController.m中添加


- (void)tapHiddenkeyboard:(UITapGestureRecognizer
{
    [self.mField1resignFirstResponder];
    [self.mField2resignFirstResponder];
}

这种方法实现的是单击背景隐藏键盘。

还有另一种单击背景隐藏键盘的方法如下:


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent
{
self.view endEditing:YES];
}