Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как отключить состояние управления выделением UIButton?

Автор вопроса: kbanmanОтветов: 12

У меня есть UIButton, который при выборе не должен менять состояние при прикосновении. По умолчанию он находится в UIControlStateHighlighted при прикосновении, и это меня злит.

Предложения?

  • Вы должны медитировать :-P Maneesh M 15.12.2020

ioscocoa-touchuikituibuttonuicontrol

Ответы

Ответ 1 · рейтинг 326 · Haydn

Для вашей кнопки buttonType должно быть установлено значение Custom.

В IB вы можете снять галочку с "Выделение корректирует изображение".

Программно вы можете использовать theButton.adjustsImageWhenHighlighted = NO;

Аналогичные параметры доступны и для состояния "отключено".

Ответ 2 · рейтинг 38 · Mosib Asad

В дополнение к приведенному выше ответу о снятии флажка "выделение регулирует изображение" в IB убедитесь, что тип кнопки установлен ПОЛЬЗОВАТЕЛЬСКИЙ.

Ответ 3 · рейтинг 37 · Manish Ahuja

Это сработает для вас:

[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];

3-я строка - это уловка ...

Это работает так же, как и установка изображения / фона.

Ответ 4 · рейтинг 23 · Tim

button.adjustsImageWhenDisabled = NO;

одинаково полезно для того, чтобы иметь собственный внешний вид отключенной кнопки.

Ответ 5 · рейтинг 5 · Dimitris

В зависимости от того, что изменяется от состояния по умолчанию к выделенному состоянию кнопки, вы можете вызвать несколько методов, чтобы установить для них то, что вам нужно. Итак, если изображение изменится, вы можете сделать

[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

Ответ 6 · рейтинг 4 · iDeveloper

Для разработчиков Swifty -

yourButton.adjustsImageWhenHighlighted = false

Ответ 7 · рейтинг 4 · yuanjilee

Swift 3+

button.adjustsImageWhenHighlighted = false

button.adjustsImageWhenDisabled = false

Ответ 8 · рейтинг 3 · therealbuckley

Хорошо, вот простое решение, если это сработает для вас, после недели ударов головой по этому поводу мне наконец пришло в голову просто установить выделенное = NO для 1-й строки метода IBAction для TouchUpInside или TouchDown, или того, что работает. На TouchUpInside у меня все было нормально.

-(IBAction)selfDismiss:(id)sender {

    self.btnImage.highlighted = NO;

    NSLog(@"selfDismiss");

    etc, etc, etc.

}

Ответ 9 · рейтинг 3 · Khushboo

сделайте вашу кнопку Тип - "Пользовательский" и снимите флажок - Отрегулируйте выделенное изображение, и все готово.

Ответ 10 · рейтинг 2 · maddy

всего две вещи:

UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom];
btnTransparentComponent.adjustsImageWhenHighlighted = NO;

Ответ 11 · рейтинг 2 · Jeff

У меня была аналогичная проблема, и я обнаружил, что "снятие флажка" Очищает графический контент в построителе интерфейса, решило мою проблему.

Ответ 12 · рейтинг -4 · János

избегайте установки Разрыва строки в UIButton на Обрезать, используйте вместо него стандартный Усечение по середине

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы