2012-09-16 3 views
16

Wie kann ich erzwingen, dass die UISearchBar automatisch eine neue Suche startet (z. B. durch Drücken der Suchtaste)? Gibt es einen einfachen Weg, dies zu erreichen?Wie kann ich programmgesteuert eine Suche in der UISearchBar erzwingen?

+0

mögliche Duplikate von [Textcursor automatisch in UISearchBar anzeigen] (http://stackoverflow.com/questions/7441839/automatic-show-text-cursor-in-uisearchbar) – Pascal

+0

Kein Duplikat, da wir das nicht anzeigen möchten Tastatur, möchten wir den Suchvorgang starten, wie es getan wird, wenn Sie auf die Suchschaltfläche klicken. Das Problem ist, dass die Logik in einer Bibliothek ist, auf die wir keinen Zugriff haben (kein Quellcode). – nja

+0

Oh, ich sehe, das macht Sinn. Sie sollten diese Information dann in die Frage stellen. ;) – Pascal

Antwort

1

Ja, Sie müssen nur einen impliziten Anruf an die searchBarSearchButtonClicked: über Ihre UISearchbarDelegate senden. Weitere Informationen zu diesem Delegaten finden Sie unter official doc.

+0

Danke für die Antwort, wir haben das Problem, dass die searchBar in einer Ansicht eingebettet ist, auf die wir keinen Zugriff haben und daher funktioniert dieser Ansatz nicht. Hast du einen anderen Hinweis? – nja

+1

Aber irgendwo in Ihrem Code sollten Sie eine Delegiertenklasse haben, um die Suche zu bewältigen - nicht wahr? – tiguero

+0

Wir haben keinen Zugriff auf diesen Teil des Codes, da er in einer Bibliothek implementiert ist, die wir verwenden, wenn wir keinen Zugriff auf den Quellcode haben. Wir versuchen, den Delegierten zu finden, der dort verwendet wird, aber bisher sind wir nicht erfolgreich. – nja

5

haben gerade das Sucheingabefeld der Ersthelfer werden:

[self.searchInputField becomeFirstResponder]; 
+0

Danke für die Antwort, was ist Selbst in diesem Zusammenhang? – nja

+0

Ihre Suchleiste :-) – tiguero

+0

Als ich herausgefunden habe, wie wir auf das Textfeld der Suchleiste zugreifen können, zeigt dieser findResponse nur die Tastatur an, aber wir wollen automatisch eine Suche starten. – nja

14

Ich fand, dass ich die UISearchViewController auf aktiv zu setzen benötigt, bevor der Wert des Suchfeldes ändert programmatisch UISearchViewController automatisch durchführen um die Suche zu machen:

// Need to set the searchDisplayController to active to 
// make the changes in search text trigger a search. 
self.searchDisplayController.active = YES; 
self.searchDisplayController.searchBar.text = @"New search string"; 
+0

Dies funktioniert wunderbar, und behoben eine Vielzahl von anderen Problemen, die ich hatte, wie bestimmte Delegate Methoden nicht ausgelöst werden. Vielen Dank. – inwit

+0

Es lohnt sich zu beachten, dass die Reihenfolge zählt :) –

0

scheint dumm, aber funktioniert, so ist es nicht dumm;)

NSString * forceReload = self.searchDisplayController.searchBar.text; 
self.searchDisplayController.searchBar.text = forceReload; 
0

Sie Ihre SearchBar,

zwingen kann

Objective C:

[self searchBar:yourSearchBarName textDidChange: yourSearchingString]; 

Swift 3.0:

self.searchBar(self.yourSearchBarName, textDidChange: yourSearchingString) 

Dies wird Ihre SearchBar auslösen.