BackgroundImage UIButton иногда не меняется с событием touchUpInside
UIButton
устанавливается как следующий код:
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 27, 27)];
[btn setBackgroundImage:[UIImage imageNamed:@"imgUp.png"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"imgDown.png"] forState:UIControlStateHighlighted];
[btn addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
Если я коснусь btw
быстро imgDown.png
не появится, но действие btnPressed:
уволен. Как это можно исправить? Любая помощь приветствуется:)
4 ответа
Решение
Следующий код может решить проблему.
-(void)btnPressedDelay{
//original code in btnPressed: method
}
- (void) btnPressed:(id)sender
{
[self performSelector:@selector(btnPressedDelay) withObject:nil afterDelay:0];
// 0 did the magic here
}
Добавьте эту строку в ваш код:
[btn setBackgroundImage:[UIImage imageNamed:@"imgDown.png"] forState:UIControlStateSelected];
Вы должны вызвать setHiglighted: метод для кнопки (btn) внутри btnPressed: function.
Его работа отлично, я буду проверять, пожалуйста, проверьте ваши изображения и попробуйте:
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 27, 27)];
[button setBackgroundImage:[UIImage imageNamed:@"rainy.jpg"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"Icon.png"] forState:UIControlStateHighlighted];
[button addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view button];