因为这两个知识点经常一起用到,所以这里就卸载同一篇文章里了。
下面直接进入正题。
键盘弹起收回管理
原理需要是利用ios消息传递与消息响应机制。
比方说一个controller里装了一个view,view里装了一个主tableview,这个时候我们可以为view添加一个单击事件:
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeKeyBoard)];
tap.numberOfTouchesRequired = 1;
[self.view addGestureRecognizer:tap];
下面是方法实现
- (void)closeKeyBoard {
[self.view endEditing:YES]; // 结束编辑 收起键盘
}
这个时候普通情况下tableview都会加了许多子控件,当然很有可能会有点击响应事件,这种情况下响应事件会被子控件拦截,并不会走到closeKeyBoard中来。
那么如何来解决这个问题呢。
我们来看看这个属性:
self.tableview.userInteractionEnabled = YES; // 使tableview开始正常处理触摸消息
这个属性属于UIView 意思是是否处理响应事件。
这么说我们就可以利用这个属性做一些我们想要的功能。
直接上代码:
// 注册监听键盘监听方法
[[NSNotificationCenter defaultCenter] addObserver:self