2010-07-07 18 views
30

Estoy tratando de averiguar si hay una manera de implementar una funcionalidad de autocompletar en un UITextField para valores específicos.UITextField Autocompletar - SDK de iPhone

Sé que el UITextField puede hacer esto usando el diccionario de iPhone (muy parecido a buscar en google en safari, etc.), pero quiero poder corregirlo programáticamente según ciertos valores que especifique.

¿Alguien sabe de alguna manera de hacer esto?

Muchas gracias, Brett

+0

Usted puede echar un vistazo a este enlace, así: http: // stackoverflow. com/questions/14384638/autocomplete-uitextfield/27760471 # 27760471 – NeverHopeless

Respuesta

7

Salida this tutorial de Ray Wenderlich lo que demuestra una forma de lograr la costumbre de autocompletar

+1

Tenga en cuenta que las respuestas solo de enlace no se recomiendan, las respuestas SO deberían ser el punto final de una búsqueda de una solución (frente a otra escala de referencias, que tienden a rancio en el tiempo). Considere agregar una sinopsis independiente aquí, manteniendo el enlace como referencia. –

+0

Esto no es realmente un autocompletado, sino un tutorial de búsqueda ... –

+0

Este tutorial funciona. Solo mire su 'UITextView' contra' UITextField'. La única advertencia es que, por alguna razón, una de mis opciones de autocompletar está siendo cubierta de alguna manera o algo por el estilo. Si lo resuelves, házmelo saber. – craned

1

uso de este método delegado. puede reemplazar los valores que especifique.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not change text 
     if ([string isEqualToString:@"StackO"]) { 
      [email protected]"StackOverflow"; 
     } 
    return YES; 
} 
12

Brett,

me hizo algo muy similar a esto mientras se trabaja en un proyecto reciente y bastante grande. Teníamos una lista en constante cambio de términos automáticos completos y construimos un autocompletado a su alrededor.

Primero, querrá hacer algún tipo de controlador de autocompletar. Debería tomar una cadena y devolver todos los posibles términos de autocompletar para esa cadena.

-(NSArray *)completionsForString:(NSString *)myString; 

Luego, consulte la clase UIMenuController. Es la clase que muestra las opciones de cortar/copiar/pegar en muchas aplicaciones. Puede obtener la instancia compartida de la misma, rellenar los elementos del menú usted mismo y mostrarlo encima del campo de texto. El usuario puede simplemente tocar el término que desee.

Al final, la solución funcionó muy bien para nuestras necesidades. Espero que te sirva

6

Como alternativa, puede utilizar esta subclase UITextField (inspirado en DOAutocompleteTextField):

https://github.com/hoteltonight/HTAutocompleteTextField

Tiene unas cuantas más funciones y se desarrolla de forma activa. El ejemplo muestra cómo usar una matriz como fuente de datos para el texto de autosugestión. Utiliza el mismo enfoque que DOAutocompleteTextField, ya que muestra el texto de finalización sugerido "fantasma" en el campo de texto a medida que el usuario escribe.

1

Acabo de enfrentarme a este hilo porque necesito algo similar. ¿Qué hay de la implementación es el propietario buscar con el método de la UITextfieldDelegate:

- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

Como usted probablemente sabe que este método se llama para la tipificación de cada UITextField.

2

Con la ayuda del mencionado tutorial de Ray Wenderlich, acabo de implementar una versión de esto para filtrar nombres en un existente UITableView.

puse delegado de mi campo de texto como mi controlador de vista, mi controlador de vista como un UITextFieldDelegate e implementado estos dos métodos: