Question

J'ai une police bitmap qui qui ne possède pas tous les personnages, tels que les caractères accentués (Ei ü, etc.) ou des symboles tels que « ¥ » ou © qui j'utilise pour afficher les noms d'utilisateur dans une table pour Highscore un jeu.

Est-il possible de limiter le clavier UIKit à certains caractères, ou seulement permettre à certains caractères du UITextField? Ou devrai-je rouler mon propre mécanisme d'entrée? Je pense et vieille école, le style Arcade, une lettre à la fois « chose » serait ok.

Était-ce utile?

La solution

Vous pouvez essayer d'utiliser la méthode UITextFieldDelegate suivante:

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

Autres conseils

En utilisant la méthode de UITextFieldDelegate mentionnée par intregus, vous pouvez le faire assez facilement:

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

essayez d'utiliser le UIKeyboardTypeNamePhonePad pour votre UITextField. Il a seulement des lettres et des chiffres à ce sujet:

textField.keyboardType = UIKeyboardTypeNamePhonePad;

Utilisation Interface Builder vous pouvez lier et obtenir l'événement pour « édition changé » dans une de votre fonction. Maintenant, là, vous pouvez mettre vérifier la longueur

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

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top