Jak wyłączyć stan kontroli podświetlenia UIButton?


147

Mam przycisk UIButton, który po wybraniu nie powinien zmieniać stanu po dotknięciu. Domyślnym zachowaniem jest ustawienie UIControlStateHighlighted podczas dotykania, co mnie denerwuje.

Propozycje?

Odpowiedzi:


313

Twój przycisk musi mieć buttonTypeustawiony niestandardowy.

W IB możesz odznaczyć "Podświetlenie dopasowuje obraz".

Programowo możesz użyć theButton.adjustsImageWhenHighlighted = NO;

Podobne opcje są dostępne również dla stanu „wyłączony”.


1
Czy wiesz, jaka byłaby programowa wersja tego? W tej chwili mam to, co działa hakowo, wyłączając go i ubierając go jako wybrany.
kbanman

99
uibutton.adjustsImageWhenHighlighted = NIE;
Haydn

43
Upewnij się również, że typ przycisku jest ustawiony na CUSTOM. (Jak wspomniał Mosib Asad w innej odpowiedzi)
Vlad Lego

Wspaniały!!! tylko mała i oczywista zmiana, którą przegapiłem !!! Ustawiłem typ klasy UIButton na MyCustomClass, ale zapomniałem zmienić ten. Więc to dawało efekt podświetlenia niewybranego przycisku. Dziękuję raz jeszcze.
Vinod Supnekar

38

Oprócz powyższej odpowiedzi o odznaczeniu „podświetlenie dostosowuje obraz” w IB, upewnij się, że typ przycisku jest ustawiony na CUSTOM.


2
To był brakujący element: guzik typu CUSTOM. Dzięki!
JOM

1
Co jeśli chciałbym zachować jako przycisk UIButton systemu? nie mogę usunąć podświetlenia dostosowuje obraz?
Amjad Husseini

36

To zadziała dla Ciebie:

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

Trzecia linia jest tutaj sztuczką ...

Działa to tak samo przy ustawianiu image / backgroundImage


1
To działa idealnie dla mnie. adjustsImageWhenHighlightedWłaściwość UIButtonwydaje się wpływać tylko obraz tła.
Michael Thiel

Pamiętaj, że jeśli zdecydujesz się przypisać obraz do „stanu wyłączenia”, nie wywołasz metody setBackgroundImage. Zamiast tego należy wykonać następujące czynności [button setImage: image forState: UIControlStateDisabled]; Należy również pamiętać, że jak wspomniano w tym wątku, właściwość adjustsImageWhenHighlighted UIButton wpływa tylko na obraz tła.
HamasN


23
button.adjustsImageWhenDisabled = NO;

jest równie przydatny do nadawania własnego wyglądu wyłączonego przycisku.


5

W zależności od tego, co zmieni się z domyślnego na podświetlony stan przycisku, możesz wywołać kilka metod, aby ustawić je na to, czego potrzebujesz. Więc jeśli obraz się zmieni, możesz to zrobić

[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];

Jeśli tekst się zmieni, możesz to zrobić

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

inne podobne funkcje:

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state

- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state


setTitleColor to wszystko, czego potrzebowałem, aby wyłączyć podświetlanie tekstu
uibutton

3

OK, oto proste rozwiązanie, jeśli to działa dla Ciebie, po tygodniu uderzania głową w to w końcu przyszło mi do głowy, że po prostu ustawiłem podświetloną = NIE dla pierwszej linii metody IBAction dla TouchUpInside lub TouchDown, lub cokolwiek działa. Dla mnie było dobrze na TouchUpInside.

-(IBAction)selfDismiss:(id)sender {

    self.btnImage.highlighted = NO;

    NSLog(@"selfDismiss");

    etc, etc, etc.

}


3

Swift 3+

button.adjustsImageWhenHighlighted = false

button.adjustsImageWhenDisabled = false

2

tylko dwie rzeczy:

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

2

Miałem podobny problem i stwierdziłem, że usunięcie zaznaczenia opcji Czyści zawartość graficzną w narzędziu do tworzenia interfejsu rozwiązało mój problem

wprowadź opis obrazu tutaj


2

ustaw przycisk Typ - „Niestandardowy” i odznacz - Podświetlony Dostosuj obraz i gotowe.


-3

Unikaj ustawiania UIButton's Line Break na Clip , zamiast tego użyj standardowego Truncate Middle

wprowadź opis obrazu tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.