9
votes

Numéro de licenciement

Dans mon application, j'ai un champ de texte qui prend une entrée de numéro de l'utilisateur à partir de l'utilisateur, donc je définit le type de clavier sur "Number Pad", mais je suis maintenant coincé sur la façon dont je dois le rejoindre lorsque l'utilisateur finit de donner une entrée. Je sais que je dois utiliser la méthode de déléguée "TextfieldShouldretturn", mais le problème est que Number Pad n'a pas de clé de retour.SO est qu'il est nécessaire d'ajouter une clé personnalisée sur le clavier ou une autre façon de sortir?


4 commentaires

Dupliqué possible de Comment montrer le bouton 'fait' sur le numéro Pad sur iPhone?


mais Kenny dans cela et il est mentionné que nous devons ajouter de la clé de retour, je veux savoir que nous ne pouvons pas le faire sans ajouter de clé faite


Bien sûr, vous pouvez le faire sans la clé DONE, créez simplement une méthode pour -ResignfirSpenter (comme dans @ PurplePilot de la réponse.)


Thx Kenny ..... mais quel est le robinet de fond et le nom de l'arrière-plan?


4 Réponses :


6
votes

Vous devez ajouter une touche de fond xxx

dans le point h, puis dans le fichier DOT M xxx


3 commentaires

Thx Violet ....... Mais qu'est-ce que le fond du fond et de la nomique est le nom de Textfield? Et qu'est-ce que namefield ici?


UitapgeserecognerIzer * Tapbackground = [[[UITAPGesturerecognizerAlizer ALLOC] InitwithTarget: Action de soi: @Selector (Tapbackground :)]; [Self.View addgesurerecognizer: Tapbackground];


Pour ajouter de l'arrière-plan, Tap Gestours Recogniseur



43
votes

une autre solution - Ajouter InputAccessoryView à YourNumberTextFiled

InputAccessoryView xxx


1 commentaires

C'est la meilleure solution



4
votes

Si vous connaissez la longueur du nombre à saisir (par exemple, une goupille à 4 chiffres), vous pouvez rejeter automatiquement le clavier après 4 clés entrées.

J'ai heurté un problème de démission du premier répondeur après 4 clés ( Ignorerait la dernière touche si vous avez retourné oui après avoir démissionné, j'ai donc ajouté un délai d'asynchronisation à la démission. p>

Ce code est dans le délégué Uitextfield: P>

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

    // max 4 keypresses
    if(range.location == 3){
        // async workaround for can't return YES after resignFirstResponder 
        [self performSelector:@selector(closeKeypad:)
                   withObject:textField
                   afterDelay:0.1
         ];
    }
    else if(range.location > 3){        
        return NO;
    }
    return YES;
}

-(void) closeKeypad:(UITextField*)textField {
    [textField resignFirstResponder];

}


1 commentaires

Reconnaissant pour ça! Merci :)



0
votes

Une autre solution assez facile à mettre en œuvre et qui fonctionne pour modifier la mise au point d'entrée ou pour rejeter le clavier.

Mettre en œuvre cette fonction (et le délégué uitextfieldelgate): p>

- (void) focusNextField:(UITextField *) textField
{
    [textField resignFirstResponder];
    // some code
}


0 commentaires