У меня есть пользовательский UITableViewCell, который инициализируется следующим:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
self = [nibArray objectAtIndex:0];
[self setSelectionStyle:UITableViewCellSelectionStyleNone];
[self.downButton setBackgroundImage:[UIImage imageNamed:@"button"] forState:UIControlStateNormal];
[self.downButton setBackgroundImage:[UIImage imageNamed:@"buttonSelected"] forState:UIControlStateHighlighted];
}
return self;
}
Кнопка отображается правильно, с соответствующим фоновым изображением, но выделенное изображение сразу не появляется, когда кнопка нажата/нажата. Вместо этого вы должны удерживать его в течение секунды или двух до того, как произойдет изменение. С другой стороны, отмена кнопки имеет мгновенное изменение обратно к исходному фоновому изображению.
Пытаясь смягчить запоздалое изменение при переключении на выделенный снимок, я внес изменения следующим образом:
- (IBAction)downDown:(id)sender {
[self.downButton setBackgroundColor:[UIColor redColor]];
}
Метод выше установлен для "Touch Down" (против более распространенного "Touch Up Inside" ), и я удалил setBackgroundImage:forState:
для выделенного состояния. Такая же проблема, как упоминалось выше. Цвет в конечном итоге изменится на красный, но только после нажатия и удерживания кнопки на секунду или два.
У меня есть метод для кнопки, которая вызывается, когда происходит "Touch Up Inside", и этот метод выполняется без проблем - независимо от того, быстро ли я нажимаю кнопку или нажимаю и удерживаю ее на некоторое время перед выпуском.
Итак, почему задержка для "Touch Down" или UIControlStateHighlighted
? Я пытаюсь предоставить мгновенную обратную связь с пользователем, чтобы показать, что кнопка нажата.
Я могу предоставить больше кода, если это необходимо, но это единственные биты, которые имеют какое-либо отношение к внешнему виду.