2009-12-07 14 views
1

J'ai une police bitmap qui n'a pas tous les caractères, tels que les caractères accentués (é î ü etc) ou des symboles tels que "¥" ou © que j'utilise pour afficher les noms d'utilisateur dans une table Highscore pour un Jeu.Puis-je limiter le jeu de caractères pour un UITextField?

Est-il possible de limiter le clavier UIKit à certains caractères ou d'autoriser uniquement certains caractères dans UITextField? Ou devrais-je lancer mon propre mécanisme d'entrée? Je pense et old school, style Arcade, une lettre à la fois "chose" serait ok.

Répondre

5

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

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

Je vois ce que vous voulez dire; Mais en raison du nombre de caractères disponibles pour les utilisateurs d'iPhone à travers le monde, cette gamme serait énorme. Je vais juste utiliser une police installée à la place. Merci quand même. – gargantuan

9

En utilisant la méthode UITextFieldDelegate mentionné 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]; 
} 
0

l'aide du Générateur d'interface vous permet de relier et d'obtenir l'événement pour "Modification modifiée" dans l'une de vos fonctions. 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; 
    } 

} 
1

essayez d'utiliser le UIKeyboardTypeNamePhonePad pour votre UITextField. Il n'y a que des lettres et des chiffres:

textField.keyboardType = UIKeyboardTypeNamePhonePad;