按钮在UITableViewCell里面是一个视图的子视图时不能在UITableViewCell子类中工作
在tableView单元中有一个按钮,我需要响应触摸事件。的cellForRowAtIndexPath:通常情况下,这将很容易被按钮在UITableViewCell里面是一个视图的子视图时不能在UITableViewCell子类中工作
[cell.playButton addTarget:self action:@selector(playButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
-tableView内解决
我遇到的问题是,我的按钮是一个自定义的UITableViewCell子类的里面,也是一个视图的子视图是我创建类的内部..
例如:
UIView *view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
self.theView = view;
[self addSubview:view];
[view release];
UIButton *playButton = [UIButton buttonWithType:UIButtonTypeCustom];
playButton.frame = CGRectMake(5, 5, 100, 30);
[playButton setImage:[UIImage imageNamed:@"button_playvid.png"] forState:UIControlStateNormal];
[playButton setImage:[UIImage imageNamed:@"button_playvid_active.png"] forState:UIControlStateHighlighted];
self.playButton = playButton;
[self.theView addSubview:playButton];
当按钮是第I内创建视图的子视图e定制UITableViewCell,那么单元格会突出显示,而不是按下按钮,因此我在-tableView:cellForRowAtIndexPath中设置的目标从不会被调用。不知道为什么..任何帮助?
感谢,
乔尔
PS。我意识到,创建一个完全像这样的背景视图可能没有实际的理由,因为已经有一个。这只是我用来解释我遇到的问题的示例代码..:D
感谢您的期待!
您要添加的UIView实际上是一个UIImageView。从文档:
新的图像视图对象被配置为默认忽略用户事件。如果要处理UIImageView的自定义子类中的事件,则必须在初始化对象后明确将userInteractionEnabled属性的值更改为YES。
我认为,要么userInteractionEnabled
级联到子视图或上海华将无法通过触摸到它的子视图在这种情况下,让你的按钮将不会被接受的一面。设置你的图像视图有.userInteractionEnabled = YES
,你应该没问题。
它的作品!谢谢你的帮助!!很高兴我在创建示例代码时不小心将它保留为UIImageView哈哈。 – 2012-02-14 07:33:36
没问题。顺便说一下,这是一个完美形成的问题 - 清晰的例子,易于复制,所有信息存在,自我包含 - 继续保持! – jrturton 2012-02-14 08:07:22
我有同样的问题,并尝试了一切。终于做到了的事情是实现该方法
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
只返回无论高度是你的自定义单元格(在NIB文件看)
感谢您发布此提示。我有同样的问题,并检查了所有的视图'userInteractionEnabled''属性设置了正确的次数比我想承认。 原来我重写了''tableView:heightForRowAtIndexPath:''并且由于某种未知的原因返回0。 – Col 2015-04-03 12:37:18
取而代之的按钮,你可以尝试用图像相同。您可以定义在单击图像时调用哪个方法。
用“playButtonPressed:”方法实现编辑您的问题。 – Krishna 2012-02-14 05:46:48
你是说你正在你的视图控制器中创建一个UIButton,并将它作为视图控制器视图的子视图并添加到uitableview的一个单元中(它也被添加到相同视图控制器的视图中)?这不可能是一个好主意... – MGA 2012-02-14 05:49:37
添加您的按钮到您的新[查看addSubview:playButton] – Hiren 2012-02-14 06:06:36