Frage

Ich habe eine Bitmap-Schrift, die die nicht jeden einzelnen Charakter hat, wie Zeichen mit Akzent (é î ü usw.) oder Symbole wie „¥“ oder ©, die ich bin mit Benutzernamen in einer Highscore-Tabelle angezeigt werden für ein Spiel.

Ist es möglich, die UIKit Tastatur auf bestimmte Zeichen zu begrenzen, oder nur bestimmte Zeichen in der UITextField? Oder muss ich meinen eigenen Eingabemechanismus rollen? Ich denke und alte Schule, Arcade-Stil, ein Buchstabe zu einem Zeitpunkt „Dinge“ wäre ok.

War es hilfreich?

Lösung

Sie könnten versuchen, die folgende UITextFieldDelegate Methode:

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

Andere Tipps

Mit der UITextFieldDelegate Methode von intregus erwähnt, können Sie dies ganz einfach:

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

versuchen, die UIKeyboardTypeNamePhonePad für Ihre UITextField verwenden. Es hat nur Buchstaben und Zahlen auf sie:

textField.keyboardType = UIKeyboardTypeNamePhonePad;

mit Interface Builder können Sie einen Link und das Ereignis bekommen für „Bearbeiten geändert“ in einem Ihrer Funktion. Jetzt gibt können Sie überprüfen, für die Länge setzen

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

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top