9

当用户触摸 UITableViewCell 时,我想实现自定义行为。我能找到的最接近用户何时触地的信息是委托方法tableView:willSelectRowAtIndexPath:。但是,文档指出:

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

关于检测此触地以执行我的自定义突出显示行为的任何建议?

谢谢!

4

1 回答 1

36

您需要继承 UITableViewCell 并覆盖该方法:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated

也许,取决于你的需要:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated

并且不要忘记打电话给超级!


苹果的文档:


更新(25/08/2015):

在 Swift 中,我会这样做:

override var highlighted: Bool {
        get {
            return super.highlighted
        }
        set {
            if newValue {
                backgroundColor = UIColor.redColor()
            }
            else {
                backgroundColor = UIColor.blackColor()
            }
            super.highlighted = newValue
        }
    }
于 2013-05-30T01:21:53.700 回答