自定义UITableViewCell突出显示Touch-Down

时间:2013-05-30 01:19:06

标签: ios objective-c cocoa-touch uitableview

我想在用户在UITableViewCell上进行触摸时实现自定义行为。我可以找到最接近用户触摸时的信息的是委托方法tableView:willSelectRowAtIndexPath:。但是,文档说明:

  

在用户触摸一行然后抬起它们之前,不会调用此方法   手指;直到那时才会选择该行,尽管它是   在触地得分时突出显示。您可以使用   UITableViewCellSelectionStyleNone禁用外观   触摸时细胞突出显示。表时不调用此方法   视图处于编辑模式(即表的编辑属性)   视图设置为YES),除非表视图允许选择   编辑(即,allowSelectionDuringEditing属性)   表格视图设置为YES)。

有关检测此触摸的任何建议,以执行我的自定义突出显示行为吗?

谢谢!

2 个答案:

答案 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];

}