iOS开发2:隐藏虚拟键盘

 对于文本框和文本视图来说,当它们成为第一响应者时虚拟键盘将出现并一直出现在屏幕上,直到文本框或文本视图退出第一响应者状态。对于iPad程序,其虚拟键盘有一个按钮可以用来关闭虚拟键盘,但是iPhone程序中却没有该按钮。

这一篇文章我使用的是前一篇的Demo,运行该Demo我们可以看到当虚拟键盘出现后就没法再关闭它了。我们可以在按下“Return”键盘关闭虚拟键盘,也可以在轻触文本框外即视图背景关闭键盘。

1.按下“Return”键里关闭虚拟键盘

当用户按下虚拟键盘中的“Return”键时会产生一个“Did End On Exit”事件,此时应通知文本框放弃第一响应状态,这样虚拟键盘就会消失了。

(1)按红色框中的按键调整窗口大小,分别选中两个UITextField控件,按下右键并拖动到

  
  
  
  
  1. @interface ViewController : UIViewController 

下,把这两个文本框映射到ViewController.h中,在name中的变量名分别为:textPlaceholder和textBackground。注意在Connection处选择的是Outlet。如下所示:

 

(2)切换到ViewController.m文件,在代码

  
  
  
  
  1. @implementation ViewController 

后添加

  
  
  
  
  1. @synthesize textPlaceholder, textBackground; 

当然,在本测试中我们也可以不添加。但我们需要养成@property与@synthesize配对使用的好习惯。

(3)同(2),选中第一个UITextField控件,按下右键并拖动到@end前,在Connection处选择的是Action,在Name中输入:textFieldReturnDidEndOnExit响应函数名称,在Event中选择“Did End On Exit”。如下所示:

(4)调整界面如下图,选择第二个文本框,在Connector Inspector中选择Sent Events下的Did End On Exit,从它右边的圆圈中拉出映射线到上一步的textFieldReturnDidEndOnExit响应函数名称上。这样,两个UITextField文本框都映射到了同一个IBAction响应函数:

(5)调整视图,切换到ViewController.m文件。可见在最后的@end之前有个函数:

   
   
   
   
  1. - (IBAction)textFieldReturnDidEndOnExit:(id)sender { 

在该函数中添加代码,让文本框放弃第一响应者状态:

  
  
  
  
  1. [sender resignFirstResponder]; 

运行程序,哈哈,成功了。当我们点击“Return”时虚拟键盘消失了!

 

2.轻触视图背景关闭键盘

步骤跟上面的差不多。

(1)首先选中ViewController_iPhone.xib,选中View,打开Identity Inspector,在Custom Class下的Class处选择UIControl。

(2)选中背景视图,按下右键并拖动到@end前,在Connection处选择的是Action,在Name中输入:backgroundTap响应函数名称,在Event中选择“Touch Down”。如下所示:

 

 

(3) 切换到ViewController.m文件中,可见在@end之前添加了如下IBAction函数:

  
  
  
  
  1. - (IBAction)backgroundTap:(id)sender { 

在该函数中添加如下代码: 

  
  
  
  
  1. [textPlaceholder resignFirstResponder]; 
  2. [textBackground resignFirstResponder]; 

 运行程序,可见如下效果:

 

 

 

 

你可能感兴趣的:(ios,文本框,iPhone,虚拟键盘)