Ios 使UITableViewCell表现得像一个真正的按钮

Ios 使UITableViewCell表现得像一个真正的按钮,ios,objective-c,cocoa-touch,cocoa,uikit,Ios,Objective C,Cocoa Touch,Cocoa,Uikit,我想让UITableViewCell像真正的按钮一样工作 直到我知道我一直在使用 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath` 技巧,但这不是最佳的,因为它不像轻触/拖动/释放时的按钮 如果您轻触单元格行并将手指拖动到单元格上,则释放手指时不会选中该单元格(但在相同情况下,按钮会启动其操作) 有没有简单的方法可以使一个UITableViewCell像一个

我想让
UITableViewCell
像真正的按钮一样工作

直到我知道我一直在使用

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath` 
技巧,但这不是最佳的,因为它不像轻触/拖动/释放时的
按钮

如果您轻触单元格行并将手指拖动到单元格上,则释放手指时不会选中该单元格(但在相同情况下,按钮会启动其操作)


有没有简单的方法可以使一个
UITableViewCell
像一个真正的按钮一样工作,而不必在
单元格中插入一个实际的
UIButton

对UITableViewCell进行子类化,并使用以下方法:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
  [super setHighlighted:highlighted animated:animated];
  if (highlighted) {
    _backgroundImageView.image = [UIImage imageNamed:@"img_h"];
  }
  else {
    _backgroundImageView.image = [UIImage imageNamed:@"img"];
  }
}

其中,img是一个普通图像,img_h是该图像的突出显示版本。

您可以创建带有按钮的表格视图单元格,将按钮标记设置为该行,以便在收到按钮事件时确定按钮属于哪一行。返回重复使用的表视图单元格而不是创建新单元格时,请确保重置按钮标记。

一种方法是创建单元格大小的UIButton并将其添加到单元格中


或者,您可以简单地在您的
UITableViewCell
中添加一个
uitagesturerecognizer
,这样您就可以完成这项工作。

恐怕这还不能回答我的问题。我想要的是细胞做一些类似于UIButton“内部润色”行为的事情。也就是说,仅当您在单元格内触摸并释放该触摸时才会触发的方法。UIButton允许在释放点击之前在按钮内部进行触摸和拖动,操作将触发。如果在触摸后和释放前拖动UITableViewCell(即使未将其拖出单元格),UITableViewCell将停止被选中,因此不会触发该操作。请注意,我希望操作在发布时触发,而不是在触摸时触发。为此,您还需要覆盖“setSelected:animated:”方法,但出于复制现有功能的原因,这样做是多余的。只需使用单元格内的按钮。