2010-02-04 6 views
0

Voici un problème avec mes champs de texte.UIAlertView montrant involontairement après chaque entrée de numéro

-(void)textFieldTextDidChange:(NSNotification *)notif 
{ 
    event.eventName = eventTextField.text; 
    event.eventPlace = eventPlaceTextField.text; 
    event.eventWinery = wineryTitleLabel.text; 
    int vintageVal = [vintageTextField.text intValue]; 
    if([vintageTextField.text length]>0 && [vintageTextField.text length] == 4) 
    { 
     event.eventVintage = vintageVal; 
    } 
    else 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"!!! MESSAGE !!!" 
       message:@" Enter the Valid year in Format YYYY" 
       delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
     return; 
    } 
} 

Si l'utilisateur entre l'année avec quatre chiffres alors seulement il doit être sauvegardé dans event.eventVitage Mais en entrant les données que je reçois l'affichage des alertes à chaque numéro unique.

Qu'est-ce que je fais mal?

+1

Pouvez-vous éditer votre code pour montrer l'indentation? Mettez "" (4 espaces) au début de chaque ligne de votre source afin que SO puisse rendre votre code correctement. –

Répondre

0

Votre problème est avec votre instruction if.

if([vintageTextField.text length]>0 && [vintageTextField.text length]==4)

Dans la && partie vous de vérifier si la longueur est 4. Si le lenth n'est pas 4 alors l'autre est appelée. Vous devez vérifier si la longueur est inférieure ou égale à 4 <= et ainsi l'alerte apparaîtra seulement si la longueur est supérieure à 4 --------------------- -------------------------------------------------- --------------!

if([vintageTextField.text length]>0 && [vintageTextField.text length]< =4)

Hope this helps et avoir du plaisir de codage

+0

Merci Jaba fonctionne vraiment bien. – monish

+0

Salut Jaba Je n'ai pas de problème ici si je le fais quand j'entre le texte dans d'autres champs de texte l'alerte arrive pour chaque lettre que nous avons entrée. – monish

0
if([vintageTextField.text length]>0 && [vintageTextField.text length] == 4) 
{ 
    event.eventVintage = vintageVal; 
} 
else 
{.... 

Cela dit: si votre TextString est 4 (supérieur à 0 est redondant ici ..) cela signifie que quand il est 1-2-3 il exécutera le code else.

Dans de telles situations, je grise souvent le texte jusqu'à ce que l'utilisateur saisisse suffisamment de chiffres ou que je désactive le bouton «Enregistrer». Si vous n'avez aucun moyen pour l'utilisateur d'indiquer qu'il a fini de taper, c'est difficile à prévoir.

+0

hey ricki merci pour votre idée. – monish