美文网首页iOS开发
IOS 不能触发didSelectRowAtIndexPath事

IOS 不能触发didSelectRowAtIndexPath事

作者: 小小鱼类 | 来源:发表于2017-07-29 11:55 被阅读73次

添加了一个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 多选
    注意选择

小小总结,不成敬意!

相关文章

网友评论

    本文标题:IOS 不能触发didSelectRowAtIndexPath事

    本文链接:https://www.haomeiwen.com/subject/vbiqlxtx.html