相信很多的iOS小白和我一样,处理键盘逻辑的时候会碰到难题,最突出的问题之一就是如何让键盘下去,又不会影响其他按钮和表的手势呢?其实只需要去添加手势的代理的就可以了,当我发现这个方法的时候,也真的是让我好开心,因为我在开发中遇到过很多的键盘问题,一个界面中可能会有很多的键盘,而所用到的键盘类型可能也会不一样,有的可能只需要数字键盘,有的可能会需要一个默认的键盘,数字键盘有的时候输入中文后,后端处理就是异常,会报错,因此让我们前端去限制。我们如果使用数字键盘,这个时候又不想影响其他的手势,这个时候我们就可使用这个方法:(支持不影响表的代理,支持输入框的一键清除,和其他按钮的点击事件,不要忘记添加手势的代理)
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
tap.cancelsTouchesInView = NO;
tap.delegate = self;
[self.view addGestureRecognizer:tap];
-(void)viewTapped:(UITapGestureRecognizer*)tap
{
[self.view endEditing:YES];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
// 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"] || [NSStringFromClass([touch.view class]) isEqualToString:@"UITextField"] || [NSStringFromClass([touch.view class]) isEqualToString:@"UIButton"]) {
return NO;
}
return YES;
}