我在tableview单元格中添加了一个按钮,但我遇到了两个问题:
1)我在按钮上调用了setTarget:action:
方法,但action:
方法永远不会被调用:
[playButton addTarget:self action:@selector(playButtonPressed:)
forControlEvents:UIControlEventTouchUpInside];
2)细胞本身最终在触摸时被选中,调用didSelectRowAtIndexPath
,我不想发生这种情况。
我已经确认该按钮至少通过设置其showsTouchWhenHighlighted
属性来看到触摸,并在按下时看到它“发光”。但无论出于何种原因,触摸事件看起来都会被传递到其单元格超视图,而不是由按钮本身处理。
我尝试将按钮直接添加到单元格的contentView
以及其他单元格子视图中,但没有效果。我还确保按钮的超级视图都支持触摸功能。
有什么想法吗?
霍华德
答案 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]; }