我想在用户在UITableViewCell上进行触摸时实现自定义行为。我可以找到最接近用户触摸时的信息的是委托方法tableView:willSelectRowAtIndexPath:
。但是,文档说明:
在用户触摸一行然后抬起它们之前,不会调用此方法 手指;直到那时才会选择该行,尽管它是 在触地得分时突出显示。您可以使用 UITableViewCellSelectionStyleNone禁用外观 触摸时细胞突出显示。表时不调用此方法 视图处于编辑模式(即表的编辑属性) 视图设置为YES),除非表视图允许选择 编辑(即,allowSelectionDuringEditing属性) 表格视图设置为YES)。
有关检测此触摸的任何建议,以执行我的自定义突出显示行为吗?
谢谢!
答案 0 :(得分:33)
您需要继承UITableViewCell并覆盖该方法:
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
也许,根据您的需要:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
并且不要忘记打电话给超级!
Apple的文档:
更新(2015年8月25日):
在Swift中,我会做这样的事情:
override var highlighted: Bool {
get {
return super.highlighted
}
set {
if newValue {
backgroundColor = UIColor.redColor()
}
else {
backgroundColor = UIColor.blackColor()
}
super.highlighted = newValue
}
}
答案 1 :(得分:-3)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}