7

Estoy usando UISearchBar en mi código. Importé su delegado en el archivo de encabezado e implementé también algunos métodos de delegado en el archivo de implementación.¿Cómo puedo desactivar/habilitar el botón de búsqueda del teclado UISearchBar?

Cuando tocamos el UISearchBar, aparecerá un teclado para ingresar texto. La tecla de retorno del teclado es "Search". Se deshabilitará de forma predeterminada. Cuando ingresamos un personaje, se habilitará. (¿Estoy en lo cierto?)

Aquí viene el problema .. Quiero habilitar la tecla de retorno del teclado UISearchBar cuando el usuario escribe al menos dos letras.

¿Es posible? Si es así, ¿cómo podemos hacerlo?

Gracias

Respuesta

7

Puede' t inhabilita el botón de búsqueda. Lo que puede hacer es utilizar los métodos UISearchBarDelegate de averiguar si debe tomar una decisión sobre el botón de búsqueda que se ha pulsado, así:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 
    if (searchBar.text.length < 2) { 
     return; 
    } 
    else { 
     // Do search stuff here 
    } 
} 

El Apple Documentation para esto es muy útil también, y es un buen punto de partida para personalizar el comportamiento de searchBar.

+1

Pero no está claro para el usuario si el botón de búsqueda está activo, pero no hace nada –

+0

Como dijo @NikKov. El problema es cómo desactivar (cambiar a color gris) botón de búsqueda. –

-1

puede probar esta

if([self.searchBar.text length] > 2) 
{ 
    [self.searchBar resignFirstResponder]; 
} 
+1

Oh .... lo siento, tengo mi error .. :(Por – Krunal

1

respuesta corta es no ...

más largo, y más exótico hackier uno está aquí: How to disable/enable the return key in a UITextField?

+0

específicamente "¿Puedo literalmente desactivar la clave de retorno para la barra de búsqueda ", esta es la respuesta correcta. Excepto que el requisito de OP podría cumplirse de lo contrario – NSNoob

0

Así es como lo hago:

if([searchbar.text length] == 0) { 
     [searchBar performSelector: @selector(resignFirstResponder) 
          withObject: nil 
          afterDelay: 0.1]; 
    } 
0

Puede probar esto,

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope{ 
     if (searchText.length>=2) { 
     [Main_SearchBar resignFirstResponder]; 

     // Do your code here 
     } 
} 
Cuestiones relacionadas