Ios 如何检测自定义UITableviewcell上按下了哪个UILabel?

Ios 如何检测自定义UITableviewcell上按下了哪个UILabel?,ios,ios4,uitableview,uilabel,Ios,Ios4,Uitableview,Uilabel,我有两个标签,每个标签上有两个独立的标签 我想通过检查标签来检测哪一个标签被按下 内部 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {} 我可以通过如下代码检索其中一个: cell = [walltable cellForRowAtIndexPath:indexPath]; topLabel= (UILabel *)[cell.contentView.su

我有两个标签,每个标签上有两个独立的标签

我想通过检查标签来检测哪一个标签被按下

内部

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {}
我可以通过如下代码检索其中一个:

cell = [walltable cellForRowAtIndexPath:indexPath];
topLabel= (UILabel *)[cell.contentView.subviews objectAtIndex:0];
但我不知道被压的那个


有没有办法找到用户按下的标签?

您可以使用本问答中建议的触摸事件和标签标签标签


如上所述,一种方法是为每个标签分配一个标记,然后在回调中计算调用UILabel的标记


如果使用自定义单元格(即子类UITableViewCell,而不是添加自定义内容/布局的标准UITableViewCell),另一种方法是将两个标签中的每一个定义为子类单元格的属性。如果标签被指定为各自的属性,您可以根据调用者评估这些属性,并确定按下了哪个标签。

我想指出的一点很重要:您对标签的引用:

topLabel= (UILabel *)[cell.contentView.subviews objectAtIndex:0];
这不是正确的通用方法。我建议将单元格中的元素附加到IBOutlet,并从那里获取引用。 至于您关于UILabel touch events的问题,我认为实现这一点的一个好方法是在标签中添加UIAPTgestureRecognitor,如下所示:

UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(firstLabelTapped)];
[firstLabel addGestureRecognizer:tgr];
[tgr release];
对第二个标签执行相同的操作。如果要将信息传递回TableView的视图控制器,请使用委派进行此操作。祝你好运