2009-07-14 15 views
12

Z jakiegoś powodu żadna z moich opcji UITextField nie spowoduje autokrytalizacji. Ustawiłem właściwość w InterfaceBuilder, jak również programowo, jak pokazano poniżej.UITextField nie będzie automatycznie generować wielkich liter w całym projekcie

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"search_cell"]; 
UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(12, 10, 320, 32)]; 
tf.autocapitalizationType = UITextAutocapitalizationTypeWords; 
tf.returnKeyType = UIReturnKeySearch; 
tf.font = [UIFont boldSystemFontOfSize:20.0]; 
tf.delegate = self; 
[cell addSubview:tf]; 
[tf becomeFirstResponder]; 

Czy mimo to mogłem ustawić jakąś flagę, który wyłącza autocapitalization w całej aplikacji nie wiedząc o tym?

Dzięki

Odpowiedz

25

Czy sprawdzić ustawienia telefonu iPhone -> Ogólne -> Klawiatura -> Auto-kapitalizacja?

+1

Boże, czuję się taki amator. Dziękuję bardzo dobrze. –

+0

Cieszę się, że mogę pomóc. – mattwright

+7

Jedną z rzeczy, na które należy zwrócić uwagę, jest to, że w symulatorze ustawienia automatycznej kapitalizacji mają wpływ tylko na klawiaturę symulatora. Więc nie zadziała, jeśli napiszesz przy pomocy prawdziwej klawiatury. :) – Hlung

3

Zauważyłem, że jeśli wyłączysz autokorektę, to również nie działa automatyczne pisanie wielkimi literami. Wydaje mi się, że powinny działać niezależnie. W polu nazwy należy zamieniać wielkie litery na każde słowo, ale nie zastępować nazwy automatycznie, bez względu na to, co słownika przewiduje.

0

Nie mogłem go uruchomić bez względu na ustawienia. Więc po prostu umieściłem to w delegacie pola tekstowego:

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

    // Handle the backspace. 
    if ([string isEqualToString:@""]) return YES; 

    // Otherwise convert to uppercase and change the textfield manually. 
    textField.text = [[textField.text stringByAppendingString:string] uppercaseString]; 
    return NO; 
} 
Powiązane problemy