UITableView点击cell不走didSelect方法原因

随笔

今天开发中遇到一个很奇葩的问题,就是用tableView把界面写好之后,然后准备写点击事件。却发现死活不走didSelect这个协议方法。代理那些都设置了,直接断点打在那,却一直不走。开始认为是哪个控件把cell遮挡住了,然后我把所有的控件都注释掉,却发现还是不走。于是上网查了一下,有人说是因为这个方法

- (NSIndexPath *)tableView:(UITableView *)tableView
  willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    return nil;
}

我试了一下,这样的确不会走didSelect方法。因为我把自定义cell改为了UItableViewCell做实验。但是我代码中根本没写这个方法,所以不会是返回nil的原因。。然后我再仔细检查了一下,最终找到原因。
原因就是我在自定义tableViewCell中加了touchBegin这个方法

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [_bgView removeFromSuperview];
}

把这个注释掉就可以了。。。

你可能感兴趣的:(UITableView点击cell不走didSelect方法原因)