Try adding delay:0.0 options:UIViewAnimationOptionAllowUserInteraction
to your other animateWithDuration:
block. Or, you can simplify your code by combining both animation blocks like this:
Code:
-(void)setHighlighted:(BOOL)highlighted
{
[super setHighlighted:highlighted];
UIColor *colorToChangeTo = highlighted ? [UIColor darkGrayColor] : [UIColor clearColor];
[UIView animateWithDuration:0.1
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.backgroundColor = colorToChangeTo;
} completion:^(BOOL finished) {}];
}