2013-07-26 6 views
6

Sie können die Eigenschaft autocapitalizationType eines UITextField festlegen, so dass alle Eingaben in Großbuchstaben erfolgen. Ich finde, das funktioniert gut am Simulator (wenn man tatsächlich auf die Tastatur des Simulators tippt, nicht auf die Tastatur des Mac), aber nicht auf dem Gerät? Alles bleibt in Kleinbuchstaben.UITextField autocapitalisationType UITextAutocapitalizationTypeAllCharacters funktioniert nicht auf Gerät

Im UICatalog Demo ich zum textFieldNormal Methode hinzugefügt:

textFieldNormal.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters; 

Added auch ein Delegierter, die tatsächliche autocapitalizationType für die UITextField angezeigt werden:

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    NSLog(@"textField.autocapitalizationType=%d", textField.autocapitalizationType); 
} 

Es wird 3 korrekt angezeigt (= UITextAutocapitalizationTypeAllCharacters), aber alles, was Sie tippen, bleibt kleingeschrieben. Was vermisse ich?

Antwort

19

Offensichtlich ist dies ein Gerät allgemeine Einstellungen Problem: Einstellungen -> Allgemein -> Tastatur -> Auto-Großschreibung muss auf die Einstellung von textField.AutocapitalizationType zu allen Großbuchstaben, sonst Einstellung der Eigenschaft scheinbar ignoriert werden. Wenn ich es einschalte, funktioniert alles wie erwartet. so etwas wie dieses

0

Sie könnten versuchen, die das Textfeld ein Delegierter:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if (range.length == 0) { // not deleting , but adding a char   
     textField.text = [textField.text stringByAppendingString:[string uppercaseString]]; 
     return NO; 
    } 

    return YES; 
} 

Dies funktioniert nur, wenn Sie versuchen, ein Symbol am Ende des Textes einfügen. Sollten Sie mit dem Text in der Mitte spielen Sie mit

range.location

und auch müssen Sie mit dem Cursor Positionierung spielen spielen könnten, wie es jeder am Ende gehen Zeit ...

Ich hoffe, das hilft jemandem.