Domanda

Ho un carattere bitmap, che che non ha ogni singolo carattere, come ad esempio le lettere accentate (é I U ecc) o simboli come "¥" o ©, che sto usando per visualizzare i nomi utente in una tabella Classifica per un gioco.

E 'possibile limitare la tastiera UIKit a certi personaggi, o consentire solo alcuni caratteri nel UITextField? Oppure dovrò rotolare il mio meccanismo di input? Sto pensando e vecchia scuola, in stile arcade, una lettera alla "cosa" il tempo sarebbe stato ok.

È stato utile?

Soluzione

Si potrebbe provare a utilizzare il seguente metodo UITextFieldDelegate:

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

Altri suggerimenti

Utilizzando il metodo UITextFieldDelegate citato da intregus, si può fare questo abbastanza 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];
}

provare a utilizzare il UIKeyboardTypeNamePhonePad per il vostro UITextField. Ha solo lettere e numeri su di esso:

textField.keyboardType = UIKeyboardTypeNamePhonePad;

Utilizzando Interface Builder è possibile collegare e ottenere l'evento per "Editing cambiato" in una qualsiasi delle vostra funzione. Ora ci si può mettere di controllo per la lunghezza

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

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top