Как отключить подсветку UIButton?

Как отключить эффект выделения кнопки при нажатии? У вас есть пользовательская кнопка с белым цветом bg и цветом текста DarkGray. Проблема заключается в том, что текст становится белым при нажатии кнопки. Уже пробовал, но никто из них не работал:

а. Снимите флажок "Выделенное изображение Ajusts" в конструкторе интерфейса.

б. Пробованная настройка выделена = НЕТ при нажатии кнопки:

((UIButton *)sender).highlighted = NO

с. Пробовал задание того же заголовка для высокого состояния:

[button setTitle:[button titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];

Любые предложения?

Ответы

Ответ 1

UIButton будет выделен щелчком, поэтому установите флажок кнопки Измените цвет заголовка в конфигурации состояния подсветки так же, как и состояние по умолчанию Или вы можете установить:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];

Если вы хотите управлять выделенным кодом, вы можете отключить нормальное выделение подклассом Button и отключить в touchhesBegin:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    if (self.state == UIControlStateHighlighted) {
        [self setHighlighted:NO];
    }
}

Ответ 2

Вы также можете создать тип UIButton: custom из StoryBoard

Custom button

Это должно лишить вас любого поведения системы. (Я думаю)

Ответ 3

Это решение для кнопок с изображениями. В раскадровке есть свойство под названием HighlightedAdjustsImage, которое по умолчанию включено. Отключите это, и ваше изображение кнопки не будет отображать выделенные свойства.

Ответ 4

Swift 4 с XCode 9

Просто снимите флажок "Выделенная настройка изображения", и если вы хотите удалить отключенный фоновый снимок, снимите флажок "Отключить настройку изображения".

Сначала убедитесь, что ваш тип кнопки "Пользовательский"

enter image description here

Ответ 5

старые устаревшие ответы и старый вопрос, но самый новый и самый простой способ:

    overlayButton.adjustsImageWhenHighlighted = false

Ответ 6

Ни одно из решений, которые я нашел в Интернете, не работало для меня (включая перечисленные здесь), поэтому я закончил это в своем настраиваемом подклассе UIButton:

// swift:

override var isHighlighted: Bool {
    didSet { if isHighlighted { isHighlighted = false } }
}

У меня также есть buttonType, установленный в .custom, но, вероятно, здесь не имеет значения.

И теперь: больше не странные выделения или цветные анимации!

Ответ 7

Мои 2 цента;) Swift 3 готов

class CustomButton: UIButton {

    override var isHighlighted: Bool {
        didSet {
            if (isHighlighted) {
                super.isHighlighted = false
            }
        }
    }

}

Ситуация и история

Я установил изображения для UIControlState.normal и UIControlState.selected, поэтому установка UIButton.isSelected = true показывает выбранное изображение, иначе нормальное изображение.

Проблема, которую мы обнаружили, была когда UIButton.isSelected = true, а во время выделения/фокусировки (нажатием кнопки удерживайте кнопку и отбрасывайте нажатие, открутив) кнопка показывает изображение для UIControlState.normal, которое выглядело довольно уродливым для моего босса: D

Я попробовал несколько решений, таких как UIButton(type: UIButtonType.custom) и UIButton.adjustsImageWhenHighlighted = false, ни один не помог: (

Ответ 8

Вы можете сделать это, создав расширение в Swift 4.2

extension UIButton {
open override var isHighlighted: Bool {
    didSet {
        super.isHighlighted = false
    }
}}

Ответ 9

Если вы добавляете кнопку в виде прокрутки, то свойство автоматического отключения кнопки прокрутки при просмотре кнопки и ее