2012-06-19 10 views
8

Ich versuche, den UIKeyboardType auf die alphabetische Tastatur zu ändern, wenn der Benutzer ein Leerzeichen eingibt und den Effekt der Eingabe eines Apostrophs spiegelt. Mein Code ändert jedoch nicht die Darstellung der Tastatur, bis der Benutzer die Tastatur entlässt und sie dann wieder zurückbringt.Ändern Sie UIKeyboardType basierend auf Texteingabe

Edit: Zur Klarstellung, der Tastaturtyp startet als UIKeyboardTypeNumbersAndPunctuation und ich möchte zu ASCIICapable wechseln, da die typische Benutzereingabe in Form von "# cups mehl" erfolgt. Ich erkannte, dass die ASCIICapable-Tastatur diese Funktionalität eingebaut hat, so dass das Präsentieren der ASCII-fähigen Tastatur, aber das Anzeigen der Zahlen/Interpunktion zuerst funktionieren würde.

Hier ist mein Code:

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

    if ([string isEqualToString:@" "]) { 
     textField.keyboardType = UIKeyboardTypeASCIICapable; 
    } 

return YES; 
} 

Antwort

10

die Tastatur entlassen und dann die ersten Responder wieder werden. In meinem Code habe ich ein IBOutlet für das Textfeld * tf erstellt. Es funktionierte.

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

    if ([string isEqualToString:@" "]) { 
     self.tf.keyboardType = UIKeyboardTypeNumberPad; 
     [textField resignFirstResponder]; 
     [self.tf becomeFirstResponder]; 
    } 

    return YES; 
} 
+0

Arbeitete perfekt, ich hätte daran gedacht. Danke, Bruno. – MaxGabriel