问题起源:准备在tableview的头视图添加UITouch事件,发现没有响应。
查找问题:经过查找,原因是事件响应被UIScrollView拦截了。
解决方法:创建一个继承于tableView类,给这个tableView添加一个点击事件,把收回键盘的代码写在这个事件中,然后让有这个需求的tableView都继承自这个tableView。(代码来源 - http://m.blog.csdn.net/blog/delicious_d/44487127)
在.h 文件中
#import <UIKit/UIKit.h>
@interface InfomationTableView : UITableView
- (void)addToucheEvent:(UITapGestureRecognizer *)tap;
@end
在.m 文件中
@implementation InfomationTableView
- (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style
{
self = [super initWithFrame:frame style:style];
if (self) {
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(addToucheEvent:)];
[self addGestureRecognizer:tap];
}
return self;
}
- (void)addToucheEvent:(UITapGestureRecognizer *)tap
{
[self endEditing:YES];
}
在你需要用到的地方创建实例对象:
TouchEventForTableView *tableView = [[TouchEventForTableView alloc] initWithFrame:CGRectMake(0, 0, self.view.width, self.view.height-64-80) style:UITableViewStyleGrouped];
tableView.dataSource = self;
tableView.delegate = self;
self.tableView = tableView;(self.tableView 是我原tableViewController的)