Как отключить состояние управления подсветкой UIButton?
У меня есть UIButton, который при выборе не должен изменять состояние при касании.
Поведение по умолчанию заключается в том, что он будет находиться в UIControlStateHighlighted при касании, и это вызывает у меня возмущение.
Предложения?
Ответы
Ответ 1
Для вашей кнопки должно быть установлено buttonType
Custom.
В IB вы можете снять флажок "Подсветка настраивает изображение".
Программно вы можете использовать theButton.adjustsImageWhenHighlighted = NO;
Аналогичные параметры доступны и для "отключенного" состояния.
Ответ 2
В дополнение к вышеприведенному ответу на снятие отметки "подсветка регулирует изображение" в IB, убедитесь, что тип кнопки установлен CUSTOM.
Ответ 3
Это будет работать для вас:
[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];
Третья строка - это трюк здесь...
Это работает одинаково для установки изображения/backgroundImage
Ответ 4
adjustsImageWhenHighlighted = NO;
Ответ 5
button.adjustsImageWhenDisabled = NO;
одинаково полезен для вашего внешнего вида отключенной кнопки.
Ответ 6
В зависимости от изменений от значения по умолчанию до выделенного состояния кнопки вы можете вызвать несколько методов, чтобы установить их в соответствии с тем, что вам нужно. Поэтому, если изменения изображения вы можете сделать
[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
Ответ 7
Хорошо, вот это простое решение, если это сработает для вас, после того, как через неделю ударило головой об этом, мне, наконец, пришло в голову просто установить выделенное = НЕТ для первой линии метода IBAction для TouchUpInside или TouchDown или любого другого работает. Для меня это было хорошо на TouchUpInside.
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
Ответ 8
Для Swifty Developer -
yourButton.adjustsImageWhenHighlighted = false
Ответ 9
Свифт 3+
button.adjustsImageWhenHighlighted = false
button.adjustsImageWhenDisabled = false
Ответ 10
всего две вещи:
UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom];
btnTransparentComponent.adjustsImageWhenHighlighted = NO;
Ответ 11
У меня была аналогичная проблема, и я обнаружил, что "снятие флажка" очищает графический контент в построителе интерфейса, исправил мою проблему
![введите описание изображения здесь]()
Ответ 12
введите свою кнопку Тип - "Пользовательский"
и Снимите флажок - Подчеркнуто Настроить изображение и
вы закончили.
Ответ 13
избегайте устанавливать UIButton Разрыв строки на Клип, вместо этого используйте стандартный Truncate Middle
![enter image description here]()