2010-02-27 6 views
9

Je veux trouver un moyen de déclencher par programmation le sélecteur qui fait passer le clavier de l'iPhone de lettres en chiffres. Je suis conscient que je peux changer le type de clavier, mais je veux savoir s'il y a un moyen de le faire sans changer le type de clavier.Puis-je activer par programmation le bouton "passer au pavé numérique" sur le clavier de l'iPhone?

+0

est-ce pour UIWebView ou d'une autre sous-classe de UIView? EDIT: Désolé, juste remarqué le tag uitextfield – conorgriffin

Répondre

6

Vous ne pouvez pas basculer par programmation les claviers (du clavier alphabétique vers le clavier numérique) vers le programme, du moins en aucune manière supporté publiquement. Comme vous l'avez mentionné, vous pouvez modifier le type de clavier ou l'apparence des caractères d'entrée de texte du premier répondeur, mais cela est différent de la commutation entre les différents keyplanes, que seul l'utilisateur devrait être en mesure de faire.

1

Jetez un oeil à ceci:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString * cellIdentifier = @"CellIdentifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if(cell == nil) 
    { 
     cell = [ [ [UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease]; 
     cell.textLabel.font = [UIFont boldSystemFontOfSize:14.0f]; 
     cell.textLabel.textColor = [UIColor whiteColor]; 
    } 

    UITextField * textField = [ [ UITextField alloc] initWithFrame:CGRectMake(55.0f, 10.0f, 230.0f, 31.0f)]; 
    textField.textColor = [UIColor whiteColor]; 

    textField.delegate = self; 
c this care fully ///////////if(indexPath.row == 0) 
c this care fully // textField.keyboardType = UIKeyboardTypeDefault; 
c this care fully //else 
c this care fully // textField.keyboardType = UIKeyboardTypePhonePad; 
    textField.autocorrectionType = UITextAutocorrectionTypeNo; 
    [cell.contentView addSubview:textField]; 

    if(indexPath.row == 0) 
    { 
     self.sender = textField; 
     cell.textLabel.text = @"From:"; 
    } 
    else 
    { 
     self.mobileNumber = textField; 
     cell.textLabel.text = @"To:"; 
    } 
    [textField release]; 
    if(indexPath.row == 1) 
    { 
     UIButton * contactsButton = [UIButton buttonWithType:UIButtonTypeContactAdd]; 
     [contactsButton addTarget:self action:@selector(addContact:) forControlEvents:UIControlEventTouchUpInside]; 
     cell.accessoryView = contactsButton; 

    } 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    return cell; 

} 

Vérifiez où je commentais « c ce soin entièrement »

Cela vous aidera à changer de clavier par programmation.

+0

pouvez-vous corriger l'indentation dans votre code? – rickharrison

6

Juste une solution de contournement: Lorsque vous voulez changer la keyplane d'un clavier actif comme de l'alphabet à pavé numérique lors de l'édition d'un UITextField, réglez d'abord la nouvelle valeur à la propriété keyboardType du champ de texte, envoyer ensuite un resignFirstResponder, enfin un message de devenirFirstResponder au champ de texte. Par exemple.

textfield.keyboardType = UIKeyboardTypeNumberPad; 
[textField resignFirstResponder]; 
[textField becomeFirstResponder]; 

Swift:

textField.keyboardType = .numberPad 
textField.resignFirstResponder() 
textField.becomeFirstResponder() 

it helps ;-D

+0

Un mot sur les applications qui sont rejetées pour cela? –

+2

Utilisez 'textField.reloadInputViews()' à la place! –

+0

@NikKov 'textField.reloadInputViews()' ne fonctionne pas tout seul. – David

Questions connexes