2009-12-26 4 views
0

J'ai cinq champs pour la saisie de nombres, et chacun de ces champs doit être dans une certaine plage de numéros. Par exemple, le champ 1 doit être supérieur à 40 et inférieur à 100. Le champ 2 doit être supérieur à 1,25 et inférieur à 5,5. Vous avez l'idée pour le reste.UIAlert sur une entrée de texte

Je suis capable de faire un UIAlertView, mais seulement pour le bouton qui est pressé pour calculer chacun des champs. Si l'utilisateur final saisit des données erronées pour chacun des cinq champs, il verra alors cinq alertes différentes et ne sera pas vraiment sensible à l'interface utilisateur.

Je voudrais que l'utilisateur saisisse le numéro et que l'utilisateur passe au champ suivant pour évaluer son entrée et envoyer une vue d'alerte. De cette façon, l'utilisateur le sait automatiquement avant d'entrer un autre champ. Je pense que cela fonctionnerait beaucoup plus facilement pour l'interface utilisateur. Mais, je ne connais pas la meilleure façon de le faire et je suis en train d'apprendre iPhone SDK et ObjC.

Voici mon code que j'ai utilisé pour mon bouton buttonPressed, qui, comme vous pouvez le voir, prend chacun des cinq champs (quatre dans ce cas), les affecte à une variable, crée deux UIAlerts de test et fait des calculs avant sortir la réponse. Gardez à l'esprit que je suis un n00b ici .....

//calculate total of variables when user clicks button 
-(IBAction) submitYourName; 
{ 
    /********************************************************* 
    declare our variables to strings 
    ********************************************************/ 
    NSString *userNameOne = txtUserName.text; 
    float numOne = [userNameOne intValue]; 
    NSString *userNameTwo = txtUserName2.text; 
    float numTwo = [userNameTwo intValue]; 
    NSString *userNameThree = txtUserName3.text; 
    float numThree = [userNameThree intValue]; 
    NSString *userNameFour = txtUserName4.text; 
    float numFour = [userNameFour intValue]; 

    /********************************************************* 
    allow error handling for our numbers 
    ********************************************************/ 
    if(numOne < 40 || numOne > 100) 
    { 
     UIAlertView *alert = [[UIAlertView alloc] 
           initWithTitle:@"User Error" 
           message:@"Your age must be at least 40 years old and less than 100 years old" 
           delegate:nil 
           cancelButtonTitle:@"OK" 
           otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
    } 

    if(numTwo < 40 || numTwo > 100) 
    { 
     UIAlertView *alert = [[UIAlertView alloc] 
           initWithTitle:@"User Error" 
           message:@"Your age must be at least 40 years old and less than 100 years old" 
           delegate:nil 
           cancelButtonTitle:@"OK" 
           otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
    } 


    /********************************************************* 
    calculate our mathematics 
    ********************************************************/ 
    float one = 3; 
    float main = numOne * one; 


    /********************************************************* 
    produce answer 
    ********************************************************/ 
    lblUserTypedName.text = [[NSString alloc] initWithFormat: @"you input %2.2f %2.2f %2.2f %2.2f", main, numTwo, numThree, numFour]; 
} 

Répondre

0

Je dirais que la Invoke de UITextFieldDelegate: méthode

- (void)textFieldDidEndEditing:(UITextField *)textField;

, et il vérifier la validation d'entrée.

BTW, pourquoi afficheriez-vous tant d'alertes? Je suggère de créer un NSString qui passerait par chaque if et ajouter quelque chose comme "L'entrée du champ 1 n'est pas valide." et ainsi de suite, et à la fin afficher un UIAlertView avec tous les détails. Ce serait convivial et meilleur que votre solution actuelle IMO.

C'est tout à fait hors de mon esprit, mais j'espère que cela vous sera utile. ~ Natanavra.

+0

Je suis confus. puis-je utiliser UITextFieldDelegate pour créer la gestion des entrées ou créer un NSString? – HollerTrain

+0

La méthode UITextFieldDelegate sera invoquée lorsque l'utilisateur passe de textField à un autre, ce qui vous permet de vérifier chaque champ individuellement après l'entrée. La création NSString empile votre message et affiche ensuite tout dans une seule alerte. – natanavra

+0

puis-je connecter textFieldDidEndEditing à chaque champ? Ensuite, il va vérifier chaque champ? – HollerTrain

Questions connexes