Pergunta

Eu tenho uma fonte bitmap que que não tem cada personagem, como caracteres acentuados (e I u etc) ou símbolos, tais como "¥" ou © que eu estou usando para nomes de usuário de exibição em uma tabela de recordes para um jogo.

É possível limitar o teclado UIKit para determinados caracteres, ou permitir apenas determinados caracteres no UITextField? Ou será que eu tenho que fazer a minha própria mecanismo de entrada? Estou pensando e old school, estilo Arcade, uma letra de cada "coisa" tempo seria ok.

Foi útil?

Solução

Você pode tentar usar o método a seguir UITextFieldDelegate:

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

Outras dicas

Usando o método UITextFieldDelegate mencionado por intregus, você pode fazer isso muito facilmente:

- (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];
}

tente usar o UIKeyboardTypeNamePhonePad para o seu UITextField. Ela tem apenas letras e números sobre ele:

textField.keyboardType = UIKeyboardTypeNamePhonePad;

Usando o Interface Builder você pode ligar e obter o evento para "Edição mudou" em qualquer de sua função. Agora lá você pode colocar cheque para o comprimento

- (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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top