我在UITableView上有一个自定义的viewForHeaderInSection – 让我们称它为HeaderCell(UITableViewCell的一个简单子类),它具有最奇怪的行为:
>当我点击节标题时:
>它触发tableView:didSelectRowAtIndexPath:与该部分的第一个UITableViewCell的indexPath.就像我点击单元格一样,但没有.我点击了标题.
问题是,如果我用简单的UIView替换自定义的HeaderCell onviewForHeaderInSection,那就不会再发生了!我检查了在该xib及其类上链接的任何操作,找不到任何addTarget:或任何xib操作.
其他奇怪的因素:它不会发生在第一个HeaderCell(第0部分)上,只发生在> = 1部分.
在HeaderCell类中,我只需要实现:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ return; }
这是最后的解决方案.有人之前发现了这种行为吗?
解决方法
您不应该使用UITableViewCell的子类作为页眉/页脚.使用UITableViewHeaderFooterView(如果你可以使用> = iOS6)或者只是UIView.