2012-09-16 15 views
16

Jak wymusić na UISearchBar automatyczne rozpoczęcie nowego wyszukiwania (np. Naciśnięcie przycisku Szukaj)? Czy istnieje prosty sposób na osiągnięcie tego?Jak mogę programowo wymusić wyszukiwanie w UISearchBar?

+0

możliwy duplikat [Automatycznie wyświetlaj kursor tekstowy w UISearchBar] (http://stackoverflow.com/questions/7441839/automatically-show-text-cursor-in-uisearchbar) – Pascal

+0

Brak duplikatów, ponieważ nie chcemy wyświetlać klawiatury, chcemy rozpocząć proces wyszukiwania tak, jak to się robi po kliknięciu przycisku wyszukiwania. Problem polega na tym, że logika znajduje się w bibliotece, w której nie mamy dostępu (bez kodu źródłowego). – nja

+0

Och, widzę, to ma sens. Powinieneś wtedy umieścić te informacje w pytaniu. ;) – Pascal

Odpowiedz

1

Tak, musisz tylko wykonać niejawne połączenie z searchBarSearchButtonClicked: na swoim UISearchbarDelegate. Zajrzyj do official doc, aby uzyskać więcej informacji na temat tego uczestnika.

+0

Dzięki za odpowiedź, mamy problem z tym, że wyszukiwarka jest osadzona w widoku, do którego nie mamy dostępu, a zatem to podejście nie działa. Czy masz jakąś inną wskazówkę? – nja

+1

Ale gdzieś w swoim kodzie powinieneś mieć klasę delegata do obsługi wyszukiwania - czyż nie? – tiguero

+0

Nie mamy dostępu do tej części kodu, ponieważ jest ona zaimplementowana w bibliotece, której używamy, gdy nie mamy dostępu do kodu źródłowego. Próbujemy znaleźć delegata, którego tam użyliśmy, ale jak dotąd nie udało nam się. – nja

5

Wystarczy pole wejściowe wyszukiwania stał się pierwszym responder:

[self.searchInputField becomeFirstResponder]; 
+0

Dzięki za odpowiedź, co jest w tym kontekście? – nja

+0

Twój pasek wyszukiwania :-) – tiguero

+0

Gdy zorientowałem się, w jaki sposób możemy uzyskać dostęp do pola tekstowego paska wyszukiwania, staje się on FirstResponder wyświetla tylko klawiaturę, ale chcemy automatycznie rozpocząć wyszukiwanie – nja

14

znalazłem, że muszę ustawić UISearchViewController do aktywnego przed zmieniając wartość w polu wyszukiwania programowo, aby UISearchViewController automatycznie wykonywać wyszukiwanie:

// 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

To działa pięknie i naprawiono wiele innych problemów, które miałem, takich jak niektóre metody delegatów nie są uruchamiane. Dziękuję Ci. – inwit

+0

Warto zauważyć, że zamówienie ma znaczenie :) –

0

wydaje się głupie, ale działa, więc to nie jest głupi;)

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

można zmusić searchBar,

Cel C:

[self searchBar:yourSearchBarName textDidChange: yourSearchingString]; 

Swift 3.0:

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

To wywoła swój searchBar.

Powiązane problemy