2

如果用户单击表格单元格而不是行中的附件图像,我希望用户获得不同的结果。

为了捕捉他们对配件的点击,我使用以下方法:

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;{
NSLog(@"accessory button tapped");
  }

另外,我没有使用标准指标。相反,我使用自定义图像如下:

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

 [cell setAccessoryView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkmark.png"]]];

}

覆盖标准附件按钮并显示图像。注意:无论在情节提要中将披露指示器设置为什么,它都会显示图像,无,复选标记,披露指示器等。

然而,目前,

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;{
NSLog(@"accessory button tapped");
  }

方法不射击。

SO上有一些答案表明如果附件是附件视图而不是附件类型,则不调用此方法。

有谁知道是否可以使用自定义图像并且仍然可以通过点击按钮的方法来触发?

4

2 回答 2

3

您可以通过在 UIImageView 上添加标签手势

UIImageView *imgView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkmark.png"]];
imgView.tag = indexPath.row;
UITapGestureRecognizer *tapGesture1 = [[UITapGestureRecognizer alloc] initWithTarget:self  action:@selector(tapGesture:)];
tapGesture1.numberOfTapsRequired = 1;
[tapGesture1 setDelegate:self];
[imgView addGestureRecognizer:tapGesture1];
[cell setAccessoryView:];

并添加选择器方法

- (void) tapGesture: (id)sender
{
    //handle Tap...
}    

希望有帮助

于 2015-10-07T11:48:23.250 回答
2

;甚至在正文开始之前,在您的方法签名中观察 a :

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;{
}

作为Apple 文档的附注:

讨论代理通常通过显示与所选行相关的新视图来响应对公开按钮(附件视图)的点击。为 indexPath 处的行设置辅助视图时,不会调用此方法。

此方法用于识别对公开指示器的触摸,而不是对附件视图的触摸。

为了支持您的附件视图触摸,创建自定义UITableViewCell并在您的附件视图上添加一个UITapGestureRecognizer以拦截点击。

于 2015-10-07T11:54:23.120 回答