Відповіді:
У вашій кнопці має бути buttonType
встановлено значення Custom.
У IB ви можете зняти прапорець "Виділити коригує зображення".
Програмно можна використовувати theButton.adjustsImageWhenHighlighted = NO;
Подібні параметри доступні і для стану "інвалідів".
Окрім наведеної вище відповіді, зніміть прапорець "підсвічує коригує зображення" в IB, переконайтесь, що для кнопки встановлено тип CUSTOM.
Це допоможе вам:
[button setBackgroundImage:[UIImage imageNamed:@"button_image"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];
Третій рядок - хитрість тут ...
Це працює так само для встановлення image / backgroundImage
adjustsImageWhenHighlighted
Властивість , UIButton
здається, зачіпає тільки фонове зображення.
Залежно від того, що змінюється від типового до виділеного стану кнопки, ви можете зателефонувати пару методів, щоб встановити їх на те, що вам потрібно. Тож якщо зображення зміниться, ви можете зробити
[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Якщо текст зміниться, ви можете зробити
[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
інші подібні функції:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
ОК, ось просте рішення, якщо це працює для вас, через тиждень стукаючи головою про це, нарешті, мені прийшло в голову просто встановити виділення = НІ для 1-го рядка методу IBAction для TouchUpInside або TouchDown, або все, що працює. Для мене це було чудово на TouchUpInside.
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
Для Swifty Developer -
yourButton.adjustsImageWhenHighlighted = false