2009-07-14 6 views
12

Pour une raison quelconque, aucun de mes UITextFields ne sera autocapitalisé. J'ai défini la propriété dans InterfaceBuilder ainsi que la programmation comme indiqué ci-dessous.UITextField ne mettra pas automatiquement en majuscule tout le projet

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

Y at-il de toute façon je aurais pu mettre un certain drapeau qui désactive autocapitalization tout au long de l'application entière sans en rendre compte?

Merci

Répondre

25

Avez-vous vérifié vos paramètres de votre iPhone -> Général -> Clavier -> Auto-capitalisation?

+1

Dieu, je me sens comme un amateur. Merci monsieur. –

+0

Content de pouvoir aider. – mattwright

+7

Une autre chose à surveiller est que, dans le simulateur, les paramètres de capitalisation automatique n'affectent que le clavier du simulateur. Donc, cela ne fonctionnera pas si vous tapez avec le vrai clavier. :) – Hlung

3

J'ai trouvé que si vous désactivez l'autocorrection, la capitalisation automatique ne fonctionne pas non plus. Il me semble qu'ils devraient fonctionner de manière indépendante. Dans un champ de nom, on voudrait mettre en majuscule chaque mot, mais pas remplacer automatiquement un nom avec ce que le dictionnaire prédit.

0

Je ne pouvais pas le faire fonctionner, peu importe les réglages. Donc, je viens de le mettre dans le délégué du champ de texte:

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