隐藏键盘操作,是开发中常见操作。一般,我们可以通过下面的方式,来隐藏键盘。
隐藏键盘的处理逻辑如下:
- (void)viewDidLoad {-(void)touchesBegan{
[super viewDidLoad];
。。。。。。。。。。
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touchesBegan)];
[self.view addGestureRecognizer:tap];
tap.delegate=self;
}
-(void)touchesBegan{
[self.view endEditing:YES];
}
通过该方法,隐藏键盘比较好用,但是发现界面上的UITableView和UIButton的点击事件不响应,原因是它们的点击事件全都被拦截了。
因此,我们可以通过设置手势识别与否,来处理上面的问题。由于手势识别gesture recognizer默认为yes,我们只需要根据具体情况,进行设置,就能避免拦截事件。如下:
- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch{
if ([touch.view.superview isKindOfClass:[UITableViewCell class]]) {
returnNO;
}else if([touch.view.superview isKindOfClass:[UIButton class]]) {
returnNO;
}
return YES;
}
通过上面的设置,UITableView等控件,就能正常接收点击事件。
详情可以参考:https://www.jianshu.com/p/d77164f8cac5