2013-07-08 4 views
16

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

a. Снимите флажок «Выделено изображение Ajusts» в построителе интерфейса.

b. Пробованная установка подсвечена = НЕТ при нажатии кнопки:

((UIButton *)sender).highlighted = NO 

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

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

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

+0

Вы используете раскадровки. –

+0

Когда вы говорите, эффект подчеркивания, вы имеете в виду, что текст меняет цвет? – Vame

+0

Также вы используете изображение для своей кнопки? –

ответ

12

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

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

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

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

вы также мог бы сделать UIButton типа: изготовленное на заказ из раскадровки

Custom button

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

+1

Это отлично сработало для меня. – LandonSchropp

+3

После некоторого поиска я наткнулся на ваш ответ. Добавляет важный аспект, который решил мою проблему: поведение Type = System добавит эффект затухания в выделенное фоновое изображение и текст. Переключение на Type = Custom отключит этот эффект, так что будут отображаться точно указанные цвета. Благодаря! – Christian

+1

это не при использовании изображений – anders

2

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

// swift: 

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

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

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

13

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

+0

Perfect, @Rajeev! Работает в Xcode 8.2. –

5

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

overlayButton.adjustsImageWhenHighlighted = false 
1

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

class CustomButton: UIButton { 

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

} 

положение и история

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

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

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

1

Свифта 4 с XCode 9

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

Сначала убедитесь, тип кнопки является "Custom"

enter image description here

Смежные вопросы