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:”方法,但出于复制现有功能的原因,这样做是多余的。只需使用单元格内的按钮。