2010-01-15 10 views
5

Tengo UITextFields en una tabla para ingresar valores. Algunos de estos campos solo aceptan números. Estoy usando UIKeyboardTypeNumbersAndPunctuation para keyboardType y shouldChangeCharactersInRange para filtrar los caracteres.¿Cómo evitar que el teclado cambie de Números a Alfabeto cuando se toca la tecla de espacio?

Además, todas las correcciones son discapacitados:

textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation; 
textField.autocorrectionType = UITextAutocorrectionTypeNo; 
textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 

En los únicos campos numéricos, cuando se toca la tecla de espacio, los cambios de teclado para los del alfabeto. Sé que este es el comportamiento predeterminado. Quiero ignorar la tecla de espacio, y no quiero que el tipo de teclado cambie.

¿Hay alguna manera de cambiar este comportamiento predeterminado?

PD: los otros tipos de teclado numérico no son una opción. Necesito la puntuación!

Gracias

Respuesta

4

No creo que es posible modificar el comportamiento del teclado.

Sin embargo, se podría implementar el textField:shouldChangeCharactersInRange:replacementString: del protocolo UITextFieldDelegate para interceptar el espacio (y apóstrofe) como esto y parece que funciona:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if ([string isEqualToString:@" "] || [string isEqualToString:@"'"]) { 
     NSMutableString *updatedString = [NSMutableString stringWithString:textField.text]; 
     [updatedString insertString:string atIndex:range.location]; 
     textField.text = updatedString; 
     return NO; 
    } else { 
     return YES; 
    } 
} 
Cuestiones relacionadas