美文网首页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