0

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

1)我setTarget:action:在按钮上调用了一个方法,但该action:方法从未被调用:

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

2)单元格本身最终在触摸时被选中,调用didSelectRowAtIndexPath,这是我不希望发生的。

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

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

有什么想法吗?

霍华德

4

3 回答 3

0

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

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

是您之前在 IB 和 cellYouAreUpdating 单元格引用中设置的标记号 -1969。之后,您将引用单元格中的按钮,并且可以使用适当的选择器设置添加目标。

希望这可以帮助。

于 2009-10-03T16:24:11.263 回答
0

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

于 2011-07-05T10:15:53.453 回答
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     {  

[单元格 setSelectionStyle:UITableViewCellSelectionStyleNone]; }

于 2013-01-24T11:33:48.617 回答