UITableViewCell имеет два вызываемых метода:
- (void) setHighlighted:(BOOL)highlighted
- (void) setSelected:(BOOL)selected
В основном setHighlighted вызывается при касании (и отменяется при касании), тогда как setSelected получает вызовы, когда выделение «застряло» (пользователь хотел нажать на ячейку). Если вы поиграете с обычным представлением таблицы и комбинацией ячеек, вы заметите, что ячейки могут выделяться кратко и не выделяться при прокрутке от них.
Чтобы выделить фон, если вы используете пользовательскую заливку фона в drawRect, вы можете изменить его цвет и вызвать setNeedsDisplay в setHighlighted, чтобы заставить его перерисовать новый фон.