解决触摸无法在UITableViewCell内的UILabel上工作的问题?

时间:2019-05-03 10:45:23

标签: ios objective-c uitableview uitouch

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{
    if (tableView == sessionListTable){
        selectedSessionId = [[self.sessionNames objectAtIndex:indexPath.row] objectForKey:@"session_id"];
        selectedSessionName = [[self.sessionNames objectAtIndex:indexPath.row] objectForKey:@"session_name"];
        NSLog(@"%@",selectedSessionId);
        [StudentCommon sharedInstance].mTeacherSessionId = selectedSessionId;
        [self remoteSessionButtonClick];
        currentIndexPath = indexPath;
        previousIndexPath = currentIndexPath;
        [sessionListTable reloadData];
        [sessionListPopUp removeFromSuperview];
    }

The表格视图中的UILabel`对触摸没有响应,尽管该触摸仅在单元格的空白区域有效。

验证所有连接,约束和类。

2 个答案:

答案 0 :(得分:0)

  • 属性检查器
  • 检查内部UI元素的所有属性
  • 确保所有用户交互都是“已打勾”☑️
  • 检查用户定义的运行时属性中的属性,然后删除 不需要。
  • 检查班级名称是否为正确的“超级班级” /“相关自定义班级”。
  • 检查 Connections Inspector 内部连接是否有任何警告⚠️,如果存在警告,则删除连接并再次连接。

This is the image showing the User Defined Runtime Attributes, which was causing this error

答案 1 :(得分:0)

首先,您应该知道UILabel不响应TouchUpInside事件。 除此之外,在UITableViewCell中引发的事件在超级视图中是无法捕获的(即,托管各自表的UITableViewController或UIViewController)。

为了实现您的目标,您需要将UILabel更改为UIButton。为了将TouchUpInside事件升级为超级视图,您有两个选择: 1-为您的单元格创建一个委托,并在您的超级视图中使用它。 2-从您的单元中发布通知,并以超级视图观察(捕获)它。

祝你好运。 :-)