2014-01-30 5 views
11

Ich habe UISearchBar in UITableView als Tabellenkopf. Als ich die UISearchBar für Start Suche drücken, wird diese MethodeCursor unsichtbar in UISearchBar iOS 7

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar 

für UISearchDisplayController ausgelöst wird.

Aber das Ergebnis ist so;

Wie Sie sehen können, ist kein Cursor dort, ich Eingabe und Suche starten, funktioniert alles einwandfrei. Außerdem ist es nur in iOS 7 unsichtbar. Mit iOS 6.1 und iOS 7.1 Beta 3 konnte ich jedoch den Cursor sehen. Wie kann ich den UISearchBar-Cursor sichtbar machen oder wie kann ich den Cursor in meine UISearchBar einfügen?

+0

Jede Chance, Sie setzen 'tintColor' irgendwo versucht, die Farbe der Verpackung UI zu ändern? Wenn dies der Fall ist, kann dies das Cursor-Problem verursachen, das Sie sehen ([mögliche Lösung] (http://stackoverflow.com/a/22386608/48700)). – patridge

Antwort

11

Cursor in der Suchleiste nimmt Farbe aus Suchleiste -> Ansicht -> Farbton Eigenschaft. In Ihrem Fall ist es auf weiße Farbe eingestellt, so dass es unsichtbar wird.

+0

In normalem Zustand haben Sie Recht, aber es funktioniert nicht für mich. Ich habe dieses Problem mit der ursprünglichen iOS-Suchleiste gelöst. –

+0

Wenn Sie nur die Cursorfarbe ändern möchten, können Sie dies verwenden: UITextField.Aussehen (whenContainedInInstancesOf: [UISearchBar.self]). tintColor = .black –

7

Versuchen Sie es mit mit

-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller 
{ 
    self.navigationItem.titleView.tintColor = [UIColor blueColor]; 

} 

hoffe, dies wird Ihnen helfen,

5

Versuchen Sie Textfeld Farbton Farbeinstellung UIAppearance mit

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor: [UIColor darkGrayColor]]; 
+0

Was ist äquivalent swift? – Satyam

1

Wenn Sie den Cursor wollen und Löschtaste, anders zu sein Farben ...


Beginnen Sie mit der Einstellung der Tönungsfarbe (nicht der Tönung) der Ansicht im Storyboard-Editor, die sowohl auf den Cursor als auch auf die Schaltfläche Abbrechen angewendet wird.

UISearchBar in storyboard editor with simulator.


, um den Cursor eine andere Farbe zu machen, müssen Sie es programmatisch tun. Das Textfeld ist ein paar Ebenen tiefer in den Unteransichten der searchBar verschachtelt. Verwenden Sie diese Hilfsfunktion, um alle Teilansichten zu durchlaufen.

@IBOutlet weak var searchBar: UISearchBar! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // set tint color for all subviews in searchBar that are of type UITextField 
    setTextFieldTintColor(to: UIColor.darkText, for: searchBar) 
}  

func setTextFieldTintColor(to color: UIColor, for view: UIView) { 
    if view is UITextField { 
     view.tintColor = color 
    } 
    for subview in view.subviews { 
     setTextFieldTintColor(to: color, for: subview) 
    } 
} 

Das Endergebnis sieht wie folgt aus:

UISearchBar with different colored cursor and cancel button.

0

Der Cursor weiß ist, weil Ihr tintColor Eigenschaft auf UISearchBar auf Weiß eingestellt ist.

Wenn Sie BTN abbrechen wollen, weiß zu sein, aber Cursor schwarz sein, das Sie verwenden können: UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = .black