美文网首页iOS开发知识小集iOS开发点滴iOS 开发继续加油
解决UITableViewCell点击无效即不执行didSele

解决UITableViewCell点击无效即不执行didSele

作者: 小蜜蜂Bee | 来源:发表于2020-04-01 09:15 被阅读0次

有时候确实挺奇怪的,按tableView的用法,实现了tableView的代理方法之后,点击cell应该是会执行didSelectRowAtIndexPath方法的,不过事情就是这么巧!有时候是真的没执行,那么现在我们就来讲讲如何解决点击cell不执行didSelectRowAtIndexPath方法的问题。

步骤1:

在cellForRowAtIndexPath方法里面创建cell的时候,给cell的contentView添加一个点击手势,示例代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    
    XMFIdeaDetailCommentCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XMFIdeaDetailCommentCell class])];
    
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    
    cell.delegate = self;
    
    [self setCommentModelOfCell:cell atIndexPath:indexPath];
    
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    
    //解决cell点击无效的问题
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];
    
    [cell.contentView addGestureRecognizer:tap];
    
    
    return cell;
}

步骤2:

执行点击手势绑定的方法,示例代码如下:

//点击手势绑定的方法
-(void)tapAction:(UITapGestureRecognizer *)tap{
    
    CGPoint point = [tap locationInView:self.myTableView];
    
    NSIndexPath *indexPath = [self.myTableView indexPathForRowAtPoint:point];
    
    XMFIdeaDetailCommentCell *cell = [self.myTableView cellForRowAtIndexPath:indexPath];
    
//判断手势点击的点是否在按钮视图内
    CGRect rc = [cell convertRect:cell.replyBtn.frame toView:self.myTableView];
    
    if (CGRectContainsPoint(rc, point)) {
     
        DLog(@"触摸点在按钮视图内");
        
        
    }else{
        
       
        
    }
    
    
    
}

这样就可以解决点击cell不执行didSelectRowAtIndexPath方法的问题了,搞定!

如果以上的方法帮助到你了,欢迎分享,更欢迎赞赏,也可以直接打开支付宝、微信、QQ的扫一扫功能直接扫下面的支付宝、微信、QQ三合一打赏码进行打赏支持作者创作,感谢感谢!

赞赏码

欢迎和我交流,微信与QQ同号:834537795(小蜜蜂)

相关文章

网友评论

    本文标题:解决UITableViewCell点击无效即不执行didSele

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