UIButton无法在tableview单元格中工作

时间:2009-08-14 16:51:31

标签: iphone uitableview uibutton

我在tableview单元格中添加了一个按钮,但我遇到了两个问题:

1)我在按钮上调用了setTarget:action:方法,但action:方法永远不会被调用:

[playButton addTarget:self action:@selector(playButtonPressed:) 
                 forControlEvents:UIControlEventTouchUpInside];

2)细胞本身最终在触摸时被选中,调用didSelectRowAtIndexPath,我不想发生这种情况。

我已经确认该按钮至少通过设置其showsTouchWhenHighlighted属性来看到触摸,并在按下时看到它“发光”。但无论出于何种原因,触摸事件看起来都会被传递到其单元格超视图,而不是由按钮本身处理。

我尝试将按钮直接添加到单元格的contentView以及其他单元格子视图中,但没有效果。我还确保按钮的超级视图都支持触摸功能。

有什么想法吗?

霍华德

3 个答案:

答案 0 :(得分:0)

有两种方法可以做到这一点,最简单的方法是使用IB将按钮添加到单元格,为按钮设置标签编号,当您使用cellForRowAtIndexPath方法时,更新单元格的用法如下:

UIButton *myButton = (UIButton *)[cellYouAreUpdating viewWithTag:-1969];

是-1969您先前在IB中设置的标签号和cellYouAreUpdating单元格引用。之后,您将获得单元格中按钮的引用,您可以使用正确的选择器设置添加目标。

希望这有帮助。

答案 1 :(得分:0)

我的按钮Y轴或Y轴+高度高于其超级视图(超级视图可能是单元格的单元格或内容视图)检查超视图的高度

答案 2 :(得分:0)

- >对于您的第一个问题,请使用此代码

UIButton *imgV1 = [UIButton buttonWithType:UIButtonTypeCustom];
[imgV1 setFrame:CGRectMake(0, 0, 320, 53)];
[imgV1 setBackgroundColor:[UIColor clearColor]]; 
[imgV1 setImage:[UIImage imageNamed:@"expired.png"] forState:UIControlStateNormal];
[imgV1 addTarget:self action:@selector(show_product_details:) forControlEvents:UIControlEventTouchUpInside];

- >对于您的第二个问题,请在

中使用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath     {  

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; }