写在前面
之前一直对UItableView点击非TextField处撤销键盘头大,要么是键盘撤销了,结果- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
方法不响应了;要么是- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
方法响应,点击Cell可以撤销,但是点击空白处不能撤销键盘;一直也没有找到一个合适的方法,今天终于找到了一个非常好的方法解决这个历史遗留问题。
步入正题
1. 创意一个继承自UITableView的类
2. 重写系统方法
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
id view = [super hitTest:point withEvent:event];
if (![view isKindOfClass:[UITextView class]]) {
[self.superview endEditing:YES];
[self endEditing:YES];
}
return view;
}
3. 将需要撤销键盘的TableView继承自上面自定义的TableView即可。