自定义UITableViewCell突出显示Touch-Down

8 cocoa-touch objective-c uitableview ios

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

在用户触摸一行然后抬起手指之前,不会调用此方法; 直到那时才会选择该行,尽管它在触摸时突出显示.您可以使用UITableViewCellSelectionStyleNone在触摸时禁用单元格高亮显示的外观.除非表视图允许在编辑期间进行选择(即,表视图的allowsSelectionDuringEditing属性为设为YES).

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

谢谢!

Bru*_*oga 34

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

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
Run Code Online (Sandbox Code Playgroud)

也许,根据您的需要:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
Run Code Online (Sandbox Code Playgroud)

别忘了给超级打电话!


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
        }
    }
Run Code Online (Sandbox Code Playgroud)