2010-01-15 5 views
5

J'ai UITextFields sur une table pour entrer des valeurs. Certains de ces champs n'acceptent que des nombres. J'utilise UIKeyboardTypeNumbersAndPunctuation pour le keyboardType, et shouldChangeCharactersInRange pour filtrer les caractères.Comment empêcher le passage du clavier de Numbers à Alphabet lorsque vous appuyez sur la touche espace?

En outre, toutes les corrections sont désactivées:

textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation; 
textField.autocorrectionType = UITextAutocorrectionTypeNo; 
textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 

Sur les champs numériques uniquement, lorsque la touche espace est touché, les changements du clavier à l'alphabet. Je sais que c'est le comportement par défaut. Je souhaite ignorer la touche d'espace et ne souhaite pas que le type de clavier change.

Est-il possible de changer ce comportement par défaut?

PS: les autres types de clavier numériques ne sont pas une option. J'ai besoin de la ponctuation!

Merci

Répondre

4

Je ne pense pas qu'il est possible de modifier le comportement du clavier.

Cependant, vous pouvez mettre en œuvre le textField:shouldChangeCharactersInRange:replacementString: du protocole UITextFieldDelegate pour intercepter l'espace (et apostrophe) comme celui-ci et il semble fonctionner:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if ([string isEqualToString:@" "] || [string isEqualToString:@"'"]) { 
     NSMutableString *updatedString = [NSMutableString stringWithString:textField.text]; 
     [updatedString insertString:string atIndex:range.location]; 
     textField.text = updatedString; 
     return NO; 
    } else { 
     return YES; 
    } 
} 
Questions connexes