Wie ändere ich die Textfarbe der Schaltfläche UISearchbar abbrechen?

7

Ich habe eine UISearchBar wie unten gezeigt. Wie kann ich die Textfarbe für die Abbrechen-Schaltfläche ändern?

    
Zhen 09.08.2011, 07:41
quelle

6 Antworten

11

Diese Frage wurde vor einiger Zeit gestellt, daher nehme ich an, dass die Person, die gefragt hat, bereits eine Lösung gefunden hat. Aber nur für den Fall, dass andere das gleiche Problem haben. Hier ist meine Lösung.

Ich habe eine UISearchBar mit einer Abbrechen-Schaltfläche, die nur angezeigt wird, wenn das Textfeld der UISearchBar angetippt wird. Die Lösung von overriding - (void) layoutSubviews in einer Unterklasse von UISearchBar war daher für mich keine Option. Jedenfalls habe ich eine Unterklasse von UISearchBar (CustomSearchBar) mit einer öffentlichen Methode zum Setzen der Schriftart und TextColor der Abbrechen-Schaltfläche. Wenn ich die UISearchBar erzeuge, stelle ich sicher, dass der Textfelddelegat der Suchleiste auf self gesetzt ist und die Klasse, die die Suchleiste erzeugt, das UITextFieldDelegate-Protokoll implementiert. Wenn der Benutzer auf das Textfeld der Suchleiste klickt, wird sein Delegat informiert und ruft die Methode CustomSearchBar auf. Der Grund, warum ich es hier mache, ist, weil es der Moment ist, in dem der Abbrechen-Button erscheint und daher weiß ich, dass es in der View-Hierarchie ist und ich seine Anpassung vornehmen kann.

Hier ist der Code:

Zum Erstellen der UISearchBar in MyRootViewController

%Vor%

UITextFieldDelegate in MyRootViewController (stellen Sie sicher, dass es das UITextFieldDelegate-Protokoll implementiert)

%Vor%

Und das ist die öffentliche Methode in der Unterklasse der UISearchBar

%Vor%     
strave 13.09.2011, 11:18
quelle
7

Anstatt all diese fantastischen Dinge zu tun, implementieren Sie einfach SearchBarTextDidBeginEditing wie folgt

%Vor%     
Gyanendra Singh 22.08.2012 14:41
quelle
4

Gyanerdra's Antwort funktioniert gut. Aber für iOS7 musste ich folgende Änderungen vornehmen, damit es in meiner App funktioniert.

%Vor%

Es scheint, dass die Suchleiste für iOS7 in einer übergeordneten Ansicht eingeschlossen ist. Hoffe, das hilft jemandem. b

    
bret 23.01.2014 16:52
quelle
2

Sie können UISearchBar von der Unterklasse ableiten und Ihre eigene - (void)layoutSubviews -Methode schreiben. In dieser Methode durchlaufen Sie ihre Unteransichten und erhalten den CancelButton. Der Rest sollte geradlinig sein.

    
tilo 09.08.2011 07:53
quelle
0

Sie können die iOS-Laufzeiteigenschaft _cancelButton nutzen, um dies zu erreichen.

%Vor%

UISearchBar kann nicht geändert werden Schaltfläche Titelfarbe nach dem Ändern des Textes.

    
Burhanuddin Sunelwala 26.11.2015 10:36
quelle
0

KVC

UIButton * button = [_searchBar valueForKey: @ "_ cancelButton"]; button.titleLabel.font = [UIFont systemFontOfSize: 13];

    
fengbai 22.04.2016 09:08
quelle