iOS 回收键盘时拦截其他点击方法解决办法
2016-04-26 11:16
567 查看
我们在项目中一般会用到textfield和tableview等,最近我遇到一个问题,当我们在写手势把键盘回收时,tableview的dissected...点击方法不会进去,查了下资料发现是因为手势的点击方法把我们tableview的点击方法拦截了,下面我教大家两种解决的办法
方法1:创建一个手势,记得遵守协议方法
UITapGestureRecognizer *tap = [[UITapGestureRecognizer
alloc]initWithTarget:self
action:@selector(action_taskTap)];
tap.delegate =
self;
[self.view
addGestureRecognizer:tap];
下面我们重写手势方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch
*)touch{
NSLog(@"%@",NSStringFromClass([touch.view
class]));
if ([NSStringFromClass([touch.view
class])
isEqualToString:@"UITableViewCellContentView"])
{//如果是点击的是tableview,return NO
return
NO;
}
return
YES;
}
实现方法
- (void)action_taskTap{
[self.view
endEditing:YES];
}
方法2:
首先,我们要知道,键盘弹出和收回是两个通知来完成的
[[NSNotificationCenter
defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];弹出
[[NSNotificationCenter
defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];收回
然后实现通知方法
- (void)keyboardWillShow:(NSNotification *)notice {
在弹出键盘的通知方法里面我们添加一个背景我淡黑的透明view,然后在view上面加上一个手势
self.keyView = [[UIView
alloc]initWithFrame:self.view.frame];
self.keyView.backgroundColor = [UIColor
colorWithWhite:0.2
alpha:0.3];
[self.view
addSubview:self.keyView];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer
alloc]initWithTarget:self
action:@selector(action_sendTap)];
tap.delegate =
self;
[self.keyView
addGestureRecognizer:tap];
}
实现手势方法
- (void)action_sendTap{
for (UIView *view
in self.view.subviews) {
[view endEditing:YES];
}
}
- (void)keyboardWillHide:(NSNotification *)notice {
移除这个view
[self.keyView
removeFromSuperview];
}
综上,我比较推荐第二种方法
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事
- IOS 改变键盘颜色代码