目标 C:如果将标签添加到单元格,则 UITable 方法“didSelectRowAtIndexPath”不起作用
Posted
技术标签:
【中文标题】目标 C:如果将标签添加到单元格,则 UITable 方法“didSelectRowAtIndexPath”不起作用【英文标题】:Objective C: UITable Method "didSelectRowAtIndexPath" does not work if label is added to cell 【发布时间】:2011-07-26 04:27:15 【问题描述】:在我的实现中,我必须向单元格添加自定义标签。但是,我意识到这样做,自定义标签覆盖的单元格区域不会对用户的“点击”做出反应,因此不会触发方法“didSelectRowAtIndexPath”。
CustomOHAttributLabel *questionLabel = [[CustomOHAttributLabel alloc]initWithFrame:CGRectMake(10, (60-labelHeight)/2, 280, labelHeight)];
[cell.contentView addSubview:questionLabel];
有没有办法让整个单元格区域即使在添加自定义标签后也能响应用户的触摸?
【问题讨论】:
为什么不能使用更小的标签? :O 为什么不使用 cell.textLabel 而不是自定义标签? @Legolas,我需要更改颜色并将文本的某些部分加粗。据我了解,我不能直接在 textLabel 中执行此操作,但需要为其添加自定义标签。我这样说对吗? 这看起来可能会解决它***.com/questions/6669027/… 我一直在为单元格添加标签,这对我来说从来都不是问题。听起来你以某种方式阻止了触摸事件,我怀疑你的自定义标签类在某种程度上有问题。关心发布相关的初始化代码吗?您的自定义标签类是继承自 UILabel 还是直接从 UIView 或 UIResponder 继承?如果是后者,您将需要更改一些设置以模仿 UILabel 默认行为。 【参考方案1】:制作一个自定义按钮并将其放在 lavel 和 onClick 调用相同的代码,看这个
CustomOHAttributLabel *questionLabel = [[CustomOHAttributLabel alloc]initWithFrame:CGRectMake(10, (60-labelHeight)/2, 280, labelHeight)];
UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
btn.frame=CGRectMake(10, (60-labelHeight)/2, 280, labelHeight);
[btn addTarget:self action:@selector(doSomeThing) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:questionLabel];
[cell.contentView addSubview:btn];
-(void)doSomeThing
//write code which you write in didSelectRowAtIndexPath method
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
[self doSomeThing];
【讨论】:
这个按钮会遮住标签还是透明按钮? 透明按钮.UIButtonTypeCustom以上是关于目标 C:如果将标签添加到单元格,则 UITable 方法“didSelectRowAtIndexPath”不起作用的主要内容,如果未能解决你的问题,请参考以下文章