实现点击UITableView空白处撤销键盘

2016-06-30  本文已影响376人  罗小耳

写在前面

之前一直对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即可。
上一篇 下一篇

猜你喜欢

热点阅读