Zmiana koloru tytułu UIButton po zaznaczeniu - jak to wyłączyć?


Stworzyłem przycisk. Domyślny kolor tytułu to czarny. Ale kiedy klikam, kolor zmienia się na trochę niebieski i nigdy więcej się nie zmienia, jak to się dzieje? Czy ktoś może mi powiedzieć dlaczego. I chcę, żeby tytuł przycisku był cały czas czarny. W jaki sposób mogę to zrobić? próbowałem
[button setTitleColor:[UIColor darkTextColor] forState:UIControlStateHighlighted];
[button setTitleColor:[UIColor darkTextColor] forState:UIControlStateSelected];

Ale bez efektu. Kiedy dodam to do mojego kodu, wygląda na to, że tytuł przycisku jest zawsze niebieski.
Kod jest następujący.
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(20, 360, 280, 44)];
[button setTitle:NSLocalizedString(@"Continue", @"Label: TextLabel in Continue button") forState:UIControlStateNormal];
button.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:20.0f];
button.titleLabel.textColor = [UIColor darkTextColor];
button.titleLabel.shadowColor = [UIColor blackColor];
button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin|UIViewAutoresizingFlexibleWidth;[self.view addSubview:button];
[button release];


Dziękuję wszystkim. Rozwiązałem ten problem. Myślę, że głównym powodem jest

w następnym
button.titleLabel.textColor = [UIColor darkTextColor];

Kiedy to usuwam i używam
button setTitleColor:(UIColor) forState:(UIControlState);

Problem rozwiązany!
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

możesz użyć

[UIButton setTitleColor:forState

:]
dla wszystkich stanów kolor tytułu pozostanie taki sam dla wszystkich stanów.
[button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor redColor] forState:UIControlStateSelected];


Uwaga: aby bezpiecznie wprowadzić lub wkleić powyższy kod trzy razy, możesz użyć następującego kodu, sugerowany kod to

,
[button setTitleColor:[UIColor redColor] forState:(UIControlStateHighlighted | UIControlStateNormal | UIControlStateSelected)];
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jak wskazuje @null, zdecydowanie najłatwiejszym sposobem jest ustawienie typu przycisku w programie Interface Builder (lub w kodzie) na „Custom”.
Jeśli chcesz powtórzyć to zachowanie ze standardowym przyciskiem, nadpisz metodę
setHighlighted
, aby zapobiec ustawieniu wartości alfa titleLabel:
- (void)setHighlighted:(BOOL)highlighted
{
[super setHighlighted:highlighted];
self.titleLabel.alpha = 1.0;
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


0 linii kodu:
>
Korzystając z programu Interface Builder i
.XIB
lub
.storyboard
wybierz
UIButton
w IB:
Wyświetl & > Narzędzia & > Pokaż inspektora atrybutów

.

Proszę wybrać

State Config

(Domyślnie) jako jeden z

asygnowany

,

wybrany

lub

niepełnosprawny

i zmień atrybut

kolory tekstu

.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wskazuje na to kilka komentarzy, ale aby uzyskać rzeczywistą odpowiedź:
Ustaw typ przycisku na
Custom
w scenorysie lub w kodzie:
[UIButton buttonWithType: UIButtonTypeCustom];
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

uważaj, system zignoruje setTitleColor (_: for :), jeśli typ przycisku nie jest niestandardowy.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W przypadku czegoś nieco bardziej nadającego się do ponownego użytku warto rozważyć to, ponieważ nie narusza to zasady DRY. Dodaj to jako kategorię do UIButton.
- (void)oka_setTitleColor:(UIColor *)color forStates:(NSArray *)states;
{
[states enumerateObjectsUsingBlock:^(NSNumber *state, NSUInteger idx, BOOL *stop) {
[self setTitleColor:color forState:[state integerValue]];
}];
}

przykład zastosowania w twoim przypadku:
[self oka_setTitleColor:[UIColor darkTextColor]
forStates:@[@(UIControlStateNormal), @(UIControlStateHighlighted), @(UIControlStateSelected)]];
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Myślę, że Mayuur ma rację. Ale czy próbowałeś użyć innego koloru zamiast „darkTextColor”?

Z tego co wiem
http://developer.apple.com/lib ... .html
„darkTextColor” to specyficzny dla systemu kolor używany do pisania tekstu na jasnym tle. Może spróbuj blackColor, jeśli sugestia Mayuury nie działa.
Edycja: spróbuj dodać:
[sender setHighlighted: NO];
do swojej IBAction, która jest wywoływana po kliknięciu przycisku. Czy to rozwiązuje problem? Sugeruję to, ponieważ w przypadku
[button release];
zakładam, że nadal używasz starej wersji pakietu SDK iOs i nie masz możliwości wyłączenia podświetlania przycisków w elegancki sposób inny niż ten.
Edit2: Tworzysz przycisk programowo, ale nie widzę, abyś łączył go z IBAction.
Dodaj to poniżej swojego
[[UIButton assign] init];
[button addTarget:self action:@selector(myIBAction) forControlEvents:UIControlEventTouchUpInside];

Następnie utwórz taką metodę IBAction:
- (IBAction)myIBAction:(UIButton *)sender;/* In Header File */- (IBAction)myIBAction:(UIButton *)sender{/* In Implementation File */
[sender setHighlighted:NO];
}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się