IOS 不能触发didSelectRowAtIndexPath事件有三种可能:
delegate 没有设置。
可能tableview被其他控件覆盖。
手势与tableview点击事件冲突
对添加的手势进行设置:
1) 遵循协议:UIGestureRecognizerDelegate
2) 在添加手势时指定代理
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction)];
tap.delegate = self;
[self.view addGestureRecognizer:tap];
3) 实现代理方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
if ([touch.view isKindOfClass:[UITextField class]])
{
return NO;
}
// 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}