添加了一个tableview 有时会出现调didSelectRowAtIndexPath方法不响应的问题。
delegate 没有设置。
-
设置delegate
tableView. delegate= self
-
或控件关联
控价关联)
可能tableView被其他控件覆盖。
仔细检查tableView上面是否有其他控件
父类事件设置代理
- 手势与tableView点击事件冲突。
比如:UIGestureRecognizer *tapGesture 。。。 tapGesture.delegate = self;
问题原因: UITapGestureRecognizer吞掉了touch事件,导致didSelectRowAtIndexPath方法无法响应。
解决方法:重写UIGestureRecognizerDelegate中的
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
// 输出点击的view的类名
NSLog(@"%@", NSStringFromClass([touch.view class]));
// 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}
这样就可以了
tableView..allowsSelection = NO;
- tableView..allowsSelection 默认为YES;检查代码中是否设置为NO;如果是去掉这行代码即可。
-
控件中selection的设置
NO Selection 无法选中 如果选择,DidSelect的方法是不走的
如图:
NO Selection
selection状态有以下三种:
- NO Selection 无法选中
- Single Selection 单选
- Mulitiple.Selcetion 多选
注意选择
网友评论