ios 中键盘自动隐藏

转载 2015年11月18日 17:39:39

实现隐藏的两种方法:

在IOS中有一个概念叫First Responder,意指第一响应者,也就是当前屏幕上,处于焦点状态的控件,它是第一响应者,我们在界面的触摸的各种手势都是由这个控件接收的。那么很好理解,当用户点击一个输入框之后,弹出输入键盘,此时这个文本输入框便是第一响应者,那现在要隐藏键盘,其实就是不让这个文本输入框作为第一响应者。 

文本输入框为我们提供了这么一个方法:resignFirstResponser

?
1
UITextField.resignFirstResponder()
这样就取消了这个文本输入框的第一响应者身份了,键盘也就自动隐藏了。

当有很多输入框时,我们还可以使用UIView提供一个就更快的方法:endEditing

?
1
UIView.endEditing(true)
直接把整个UIView的编辑状态取消掉,那不管界面上哪个输入框作为第一响应者身份,都能被取消编辑状态,键盘也就消失了。

如何触发 

知道了如何让键盘隐藏,那就要在恰当时机去执行它。通常有两种方法: 

1)键盘右下角的return、完成按钮被点下时 

2)输入框周围的空白区域被点击时 

第一种方法,需要处理输入框的DidEndOnExit事件: 

?
1
2
3
@IBAction func txt_DidEndOnExit(sender: UITextField) {
    sender.resignFirstResponder()
}
可以把n个输入框的DidEndOnExit事件都关联到这个事件方法上,这样就不用一个个写重复代码了。

第二种方法,当点击空白区域时,键盘自动隐藏,一般这个空白区域就是一个UIView,我们需要让UIView响应点击(tap)事件,但是要知道响应事件是UIControl的事情,所以,我们需要把这个UIView改成UIControl,因为UIControl是UIView的子类,所以完全可行! 

把View的Class改成UIControl,那么这个View就能像UIControl那些控件一样,可以接收点击事件了。 

我们处理这个大Control的Touch Down事件: 

?
1
2
3
@IBAction func touchDown(sender: UIControl) {
    txtName.resignFirstResponder()
}
注意,这时就不是用sender对象了,sender是UIControl的,我们是要让输入框取消第一响应者状态。 

这里仅争对使用普通UIView的界面,当使用UTableViewController时,就不能用这种方法咯,需要手动创建一个手势识别器,将它关联到整个UITableViewController。 

使用UITableViewControl这种控件时如何触发 

要知道,手势识别器可以很灵活的关联到任意一个View上,所以我们可以为UITableViewController创建一个UITapGestureRecognizer的点击识别器。 

在ViewDidLoad方法中写入: 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
override func viewDidLoad() {
    super.viewDidLoad()
    var tap = UITapGestureRecognizer(target: self, action: "keyboardHide:")
    tap.cancelsTouchesInView = false
    self.view.addGestureRecognizer(tap)
}
 
func keyboardHide(tapG:UITapGestureRecognizer){
    //整个view  结束编辑状态(方法一)
    self.view.endEditing(true)
    //单个输入框(方法二)
    self.txtUserName.resignFirstResponder()
}
这样整个 UITableViewController的空白区域都能接收tap事件了,也就实现了隐藏输入框的功能。



IOS 点击空白处隐藏键盘的几种方法

IOS7 点击空白处隐藏键盘的几种方法 IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好...
  • SwingPyzf
  • SwingPyzf
  • 2013年12月03日 10:41
  • 132015

页面跳转 和虚拟键盘的自动隐藏

前提:起码要有两个视图控制器。 注意事项: 设置跳转的动画效果 UITextField输入时,虚拟键盘的位置设置(整体布局向上移动,虚拟键盘的自动隐藏) 实现的功能: A:在...
  • u012989536
  • u012989536
  • 2015年08月27日 21:26
  • 3699

记录H5页面IOS中input输入框失去焦点后,键盘隐藏

//问题描述:安卓下无此问题,在ios自带的浏览器中,H5页面在input输入获取焦点后键盘弹出,随便触碰一个地方要使键盘隐藏 //解决方案:如下 jQuery("body").on("touch...
  • baidantop
  • baidantop
  • 2018年01月16日 16:25
  • 150

iOS中收起键盘的几种方式

在使用UITextField的时候,我们会和键盘打交道,有时候要求弹出来的键盘类型是数字键盘,有时候要求我们弹出来的是一般的键盘。当我们输入完成的时候,就涉及到在上什么时候收回键盘的事情了。收回键盘分...
  • iOSCircleAndCircle
  • iOSCircleAndCircle
  • 2017年07月17日 17:33
  • 484

iOS开发中的键盘显示和隐藏

应用中,跟用户交互功能必不可少! 处理键盘的显示/隐藏可能会比较苦恼,尤其在iOS8出来之后,开放了键盘接口,允许使用第三方输入法,从而导致了键盘事件处理的错综复杂。比如说,像百度输入法,键盘右...
  • codeblshi
  • codeblshi
  • 2014年12月20日 12:19
  • 1442

iOS中收回键盘的方法

键盘收起在UI开发中还是比较重要的, 适时收起键盘可以增强用户体验
  • wangjunling888
  • wangjunling888
  • 2016年04月27日 00:21
  • 1123

键盘自动隐藏方法:

1.最简单粗暴的,只要在 任何 UIView子类结束编辑即可:  在一个VIewController收起键盘的方法如下:  -(void)touchesBegan:(NSSet*)touche...
  • hsf_study
  • hsf_study
  • 2015年08月23日 12:39
  • 525

iOS开发-键盘样式风格有关设置

一、键盘风格    UIKit框架支持8种风格键盘。 [java] view plaincopyprint? typedef enum {     ...
  • hitwhylz
  • hitwhylz
  • 2014年04月07日 11:34
  • 2893

iOS之键盘弹出视图上移

有时候搞开发会碰到一个问题,就是当点击一个UITextField时,弹出虚拟键盘会将这个文本控件遮住。这无论从开发角度还是用户体验来说,都是不行的。 其实要解决这个问题也是很简单的,只要获取键盘没弹...
  • qq_27325349
  • qq_27325349
  • 2016年04月01日 12:40
  • 6763

iOS-键盘弹出的类型

iOS 提供了10种键盘类型,在开发中,我们可以根据不同的需求,选择不同的键盘样式,例如,当我们只需要输入手机号码时,可以选择纯数字类型的键盘(NumbersAndPunctuation),当我们需要...
  • Mazy_ma
  • Mazy_ma
  • 2016年05月06日 17:27
  • 3286
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios 中键盘自动隐藏
举报原因:
原因补充:

(最多只允许输入30个字)