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%Anstatt all diese fantastischen Dinge zu tun, implementieren Sie einfach SearchBarTextDidBeginEditing wie folgt
%Vor% Sie können die iOS-Laufzeiteigenschaft _cancelButton
nutzen, um dies zu erreichen.
UISearchBar kann nicht geändert werden Schaltfläche Titelfarbe nach dem Ändern des Textes.
Tags und Links objective-c iphone ios uisearchbar