UITableView点击cell不走didSelect方法原因

本文详细解析了UITableView点击事件不触发的问题,通过排除代码错误,最终定位到自定义UITableViewCell的touchBegin方法及xib设置的selection状态导致的问题,并提供了解决方案。

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

- (NSIndexPath *)tableView:(UITableView *)tableView

willSelectRowAtIndexPath:(NSIndexPath *)indexPath {

return nil;

}

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

 

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

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

原文链接:http://www.jianshu.com/p/eace2b0f50b1

我遇到的问题跟上面都不一样,我在仔细检查完代码后,又做了替换测试,始终认为代码没有任何问题。因为是使用xib开发,所以发现问题出在xib设置上

selection状态有以下三种,如果是第一种,DidSelect的方法是不走的
NO selection 无法选中
single Selection 单选
Muliti...Selcetion 多选
这些是tableview的属性,在代码里有设置
名字叫allowSelection开头的

这次也给了我很大的教训,有些时候问题不一定出现在代码中,因为使用了xib或者storyboard ,一些故障问题出现在这里也不足为奇了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值