Pregunta

Tengo una fuente de mapa de bits, que que no tiene cada personaje, como caracteres acentuados (e Iu, etc.) o símbolos tales como "¥" o © lo que estoy usando para mostrar los nombres de usuario en una tabla de puntuaciones para un juego.

¿Es posible limitar el teclado UIKit a ciertos caracteres, o sólo permiten determinados caracteres en la UITextField? O voy a tener que rodar mi propio mecanismo de entrada? Estoy pensando y vieja escuela, estilo Arcade, una letra a la "cosa" tiempo estaría bien.

¿Fue útil?

Solución

Se podría tratar de usar el siguiente método UITextFieldDelegate:

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

Otros consejos

Utilizando el método mencionado por UITextFieldDelegate intregus, usted puede hacer esto con bastante facilidad:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    // Only characters in the NSCharacterSet you choose will insertable.
    NSCharacterSet *invalidCharSet = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefgABCDEFG"] invertedSet];
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:invalidCharSet] componentsJoinedByString:@""];
    return [string isEqualToString:filtered];
}

intente utilizar el UIKeyboardTypeNamePhonePad para su UITextField. Tiene solamente letras y números en él:

textField.keyboardType = UIKeyboardTypeNamePhonePad;

El uso de constructor de interfaz se puede enlazar y obtener el evento de "Edición cambió" en cualquiera de su función. Ahora no se puede poner, controlar la longitud

- (IBAction)onValueChange:(id)sender 
{
    NSString *text = nil;
    int MAX_LENGTH = 20;
    switch ([sender tag] ) 
    {
        case 1: 
        {
            text = myEditField.text;
            if (MAX_LENGTH < [text length]) {
                myEditField.text = [text substringToIndex:MAX_LENGTH];
            }
        }
            break;
        default:
            break;
    }

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top