2013-07-26 18 views
6

Można ustawić właściwość autocapitalizationType pola UITextField, aby wszystkie dane wejściowe były pisane wielkimi literami. Uważam, że działa dobrze na symulatorze (podczas dotykania klawiatury symulatora, a nie klawiatury komputera Mac), ale nie na urządzeniu? Wszystko pozostaje małe.UITextField autocapitalizationType UITextAutocapitalizationTypeAllCharacters nie działa na urządzeniu

W demie UICatalog dodałem metody textFieldNormal:

textFieldNormal.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters; 

dodał delegat też, aby wyświetlić rzeczywiste autocapitalizationType dla UITextField:

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

będzie prawidłowo Wyświetlacz 3 (= UITextAutocapitalizationTypeAllCharacters), ale wszystko, co wybierzesz, pozostanie małe. czego mi brakuje?

Odpowiedz

19

Wygląda na to, że jest to problem z ustawieniami urządzenia: Ustawienia -> Ogólne -> Klawiatura -> Automatyczna kapitalizacja musi być ustawiona na WŁ w celu uhonorowania ustawienia textField.autocapitalizationType na wielkie litery, w przeciwnym razie ustawienie właściwości zostanie zignorowane. Jeśli go włączę, wszystko działa zgodnie z oczekiwaniami.

0

można spróbować coś takiego delegat pola tekstowego:

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

ta działa tylko wtedy, gdy próbujesz wstawić symbol na końcu tekstu. Jeżeli chcesz grać z tekstem w środku można grać z

range.location

i również trzeba będzie grać z pozycjonowania kursora, jak to możliwe po zakończeniu każdego czas ...

Mam nadzieję, że to pomoże komuś.

Powiązane problemy