iOS开发

IOS 不能触发didSelectRowAtIndexPath事

2017-07-29  本文已影响73人  小小鱼类

添加了一个tableview 有时会出现调didSelectRowAtIndexPath方法不响应的问题。

delegate 没有设置。

可能tableView被其他控件覆盖。

仔细检查tableView上面是否有其他控件

父类事件设置代理

问题原因: 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;

selection状态有以下三种:

  • NO Selection 无法选中
  • Single Selection 单选
  • Mulitiple.Selcetion 多选
    注意选择

小小总结,不成敬意!

上一篇 下一篇

猜你喜欢

热点阅读