2012-09-16 14 views
16

¿Cómo puedo forzar a UISearchBar para que inicie automáticamente una nueva búsqueda (como presionar el botón Buscar)? ¿Hay alguna manera fácil de lograr esto?¿Cómo puedo forzar programáticamente una búsqueda en UISearchBar?

+0

posible duplicado de [Mostrar automáticamente el cursor de texto en UISearchBar] (http://stackoverflow.com/questions/7441839/automatically-show-text-cursor-in-uisearchbar) – Pascal

+0

No duplicado, ya que no queremos mostrar el teclado, queremos comenzar el proceso de búsqueda como lo hace cuando hace clic en el botón de búsqueda. El problema es que la lógica está en una biblioteca a la que no tenemos acceso (no hay código fuente) – nja

+0

Oh, ya veo, eso tiene sentido. Deberías poner esa información en la pregunta entonces. ;) – Pascal

Respuesta

1

Sí, solo necesita hacer una llamada implícita al searchBarSearchButtonClicked: en su UISearchbarDelegate. Eche un vistazo al official doc para obtener más información sobre este delegado.

+0

Gracias por la respuesta, tenemos el problema de que searchBar está incrustado en una vista a la que no tenemos acceso y, por lo tanto, este enfoque no funciona. ¿Tienes alguna otra pista? – nja

+1

Pero en algún lugar de tu código deberías tener una clase de delegado para manejar la búsqueda, ¿no es así? – tiguero

+0

No tenemos acceso a esa parte del código ya que está implementado en una biblioteca que usamos cuando no tenemos acceso al código fuente. Estamos tratando de encontrar el delegado que se usa allí, pero hasta ahora no hemos tenido éxito. – nja

5

sólo tienen el campo de búsqueda se convierten en el primer nivel de respuesta:

[self.searchInputField becomeFirstResponder]; 
+0

Gracias por la respuesta, ¿qué es el yo en este contexto? – nja

+0

su barra de búsqueda :-) – tiguero

+0

Como descubrí cómo podemos acceder al campo de texto de la barra de búsqueda, este becomeFirstResponder solo muestra el teclado, pero queremos comenzar una búsqueda automáticamente – nja

14

encontré que necesitaba para establecer el UISearchViewController al activo antes de cambiar el valor del campo de búsqueda mediante programación para hacer UISearchViewController realice automáticamente la búsqueda:

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

Esto funciona muy bien y solucionó una serie de otros problemas que tenía, como ciertos métodos delegados que no se activan. Gracias. – inwit

+0

Merece la pena notar que ese orden es importante :) –

0

parece tonto, pero funciona, así que no es tonto;)

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

Puede forzar a su barra de búsqueda,

Objetivo C:

[self searchBar:yourSearchBarName textDidChange: yourSearchingString]; 

Swift 3.0:

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

Esto hará que tu barra de búsqueda.

Cuestiones relacionadas