178 votes

Modifier par programmation objet UITextField type de Clavier

Est-il possible de modifier par programmation le type de clavier d'un uitextfield, de sorte que quelque chose comme cela serait possible:

if(user is prompted for numeric input only)
    [textField setKeyboardType: @"Number Pad"];

if(user is prompted for alphanumeric input)
    [textField setKeyboardType: @"Default"];

375voto

PengOne Points 33226

Il y a un keyboardType de la propriété pour un UITextField:

typedef enum {
    UIKeyboardTypeDefault,                // Default type for the current input method.
    UIKeyboardTypeASCIICapable,           // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active
    UIKeyboardTypeNumbersAndPunctuation,  // Numbers and assorted punctuation.
    UIKeyboardTypeURL,                    // A type optimized for URL entry (shows . / .com prominently).
    UIKeyboardTypeNumberPad,              // A number pad (0-9). Suitable for PIN entry.
    UIKeyboardTypePhonePad,               // A phone pad (1-9, *, 0, #, with letters under the numbers).
    UIKeyboardTypeNamePhonePad,           // A type optimized for entering a person's name or phone number.
    UIKeyboardTypeEmailAddress,           // A type optimized for multiple email address entry (shows space @ . prominently).
    UIKeyboardTypeDecimalPad,             // A number pad including a decimal point
    UIKeyboardTypeTwitter,                // Optimized for entering Twitter messages (shows # and @)
    UIKeyboardTypeWebSearch,              // Optimized for URL and search term entry (shows space and .)

    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated

} UIKeyboardType;

Votre code doit lire

if(user is prompted for numeric input only)
    [textField setKeyboardType:UIKeyboardTypeNumberPad];

if(user is prompted for alphanumeric input)
    [textField setKeyboardType:UIKeyboardTypeDefault];

83voto

jterry Points 2256

Il est intéressant de noter que si vous voulez un actuellement axée champ à mettre à jour le type de clavier immédiatement, il y a une étape supplémentaire:

// textField is set to a UIKeyboardType other than UIKeyboardTypeEmailAddress

[textField setKeyboardType:UIKeyboardTypeEmailAddress];
[textField reloadInputViews];

Sans l'appel à reloadInputViews, le clavier ne changera pas jusqu'à ce que le champ sélectionné (le premier intervenant) perd et reprend focus.

Une liste complète de l' UIKeyboardType valeurs peuvent être trouvés ici, ou:

typedef enum : NSInteger {
    UIKeyboardTypeDefault,
    UIKeyboardTypeASCIICapable,
    UIKeyboardTypeNumbersAndPunctuation,
    UIKeyboardTypeURL,
    UIKeyboardTypeNumberPad,
    UIKeyboardTypePhonePad,
    UIKeyboardTypeNamePhonePad,
    UIKeyboardTypeEmailAddress,
    UIKeyboardTypeDecimalPad,
    UIKeyboardTypeTwitter,
    UIKeyboardTypeWebSearch,
    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable
} UIKeyboardType;

23voto

Alan Moore Points 3772

Oui, vous pouvez, par exemple:

[textField setKeyboardType:UIKeyboardTypeNumberPad];

9voto

Hossam Ghareeb Points 1202

pour rendre le champ de texte à accepter alpha numérique ne définissez cette propriété

textField.keyboardType = UIKeyboardTypeNamePhonePad;

2voto

Kyle Rosenbluth Points 164

Il y a une propriété de ce qui est appelé' keyboardType. Ce que vous voulez faire est de remplacer où vous avez cordes @"Number Pad et @"Default avec UIKeyboardTypeNumberPad et UIKeyboardTypeDefault.

Votre nouveau code devrait ressembler à quelque chose comme ceci:

if(user is prompted for numeric input only)
    [textField setKeyboardType:UIKeyboardTypeNumberPad];

else if(user is prompted for alphanumeric input)
    [textField setKeyboardType:UIKeyboardTypeDefault];

Bonne Chance!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X