2010-12-06 7 views
0

Ich bin vor langer Zeit auf dieses Problem gestoßen und habe es behoben, aber jetzt habe ich keine Ahnung, wie ich es gemacht habe, und ich stoße darauf in einem anderen Controller.UISearchDisplayController zeigt weiße statt graue Tabellenzellenrahmen

ich den folgenden Code verwenden die Tastatur automatisch angezeigt zu machen, wenn ich das als Suchleiste meine Sicht zeigen:

[self.rootController.changeClientViewController.searchDisplayController.searchBar becomeFirstResponder]; 
[self.rootController.changeClientViewController.searchDisplayController setActive:YES]; 

Die Tastatur erscheint, wie es soll, aber die Linien zwischen jedem Tischzellen sind weiß, statt dunkelgrau, und es sieht schlecht aus. Ich benutze denselben Code an einer anderen Stelle, um die Tastatur automatisch zu öffnen. und da sind die Linien wie erwartet dunkelgrau. Ist jemand darauf gestoßen? Ich konnte zu einem Screenshot verknüpfen, wenn es hilfreich wäre, ...

+0

Ist das in 'viewWillAppear:', 'viewDidAppear:' oder etwas anderes? – bosmacs

+0

Es ist in einem separaten Controller (also der lange Weg, um zum searchBar zu gelangen) ... Wir versuchten es in 'viewDidLoad',' viewDidAppear: 'und' viewWillAppear: 'zuerst, aber es brachte nicht die Tastatur an Alles dann. (Obwohl in der Steuerung, wo es funktioniert, ist es in 'ViewWillAppear:') Der einzige Unterschied, den ich sehen kann, ist, dass die eine, die funktioniert, eine Vollbild-Modalansicht ist; während dies nur eine Unteransicht ist. – GendoIkari

Antwort

2

hier ein Weg, um es zu beheben: becomeFirstResponder nach einer winzigen Verzögerung, dh

[self.rootController.changeClientViewController.searchDisplayController.searchBar 
    performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0]; 
+0

Ok, das funktionierte im Grunde ... Ich musste auch das 'setActive:' loswerden, dann funktionierte es ... Jede Chance, die du erklären könntest 1) Wie kann eine Verzögerung von 0.0 überhaupt etwas bewirken? Es gibt 0 Verzögerung. 2) Die andere Stelle im Code, an der ich das mache, benötigt 'setActive:' um richtig zu funktionieren. Die Tastatur kommt nicht auf, wenn ich sie nicht habe. In diesem Fall muss ich 'setActive:' loswerden, damit es richtig funktioniert. – GendoIkari

+0

Ich glaube '' findFirstResponder' macht den Suchcontroller effektiv aktiv. Was die 0.0-Verzögerung betrifft, obwohl sie 0.0 ist, wird sie nicht sofort ausgeführt, sondern plant einen Timer, der in der Standardlaufschleife ausgewertet wird. Siehe diese Antwort für weitere Informationen: http://stackoverflow.com/questions/1922517/how-does-performselectorwithobjectafteredelay-work – bosmacs

+0

Nun bin ich noch ein wenig verloren, warum ich SetActive tun musste: an einem Ort; aber ich musste setActive nicht verwenden: an einem anderen Ort ... aber da deine Antwort mich zu einem Ort geführt hat, an dem mein Code wie gewünscht funktioniert, akzeptiere ich. – GendoIkari