Question

Je suis une issue avec mon bouton Enregistrer dans un UINavController modal. Lorsque j'appuie sur le bouton Enregistrer, je rejetais le clavier si elle est toujours en place, la validation des données des champs de texte, montrant alors une UIProgressView pendant que j'envoie mes informations sur.

Mon problème est que le clavier ne reçoit pas de la route assez vite, si le clavier est toujours quand il est temps de montrer l'UIProgressView et il est ajouté se vers le bas de mon point de vue et il semble stupide.

Je ne peux appuyer sur la touche de retour, et les gouttes clavier, puis appuyez sur Enregistrer, aucun problème. Mais si l'utilisateur ignore la touche retour du clavier et va droit pour en haut à droite le bouton Enregistrer, j'ai des problèmes.

Idéalement, je voudrais mettre en œuvre une brève déclaration d'attente pour le faire tomber hors de la vue. Ou effectuer ma validation après un délai, mais rien que j'ai essayé fonctionne. S'il vous plaît aider.

Exemple de code:

// end edit mode - should kill all keyboards
[[self.tableView superview] endEditing:YES]; 

// make sure everything is entered correctly and validates
[self validateEntryFields]; // keyboard not gone when this finishes

if (valid) { // progress view shows up towards bottom of view
    HUD = [[MBProgressHUD alloc] initWithView:self.view];
    [self.view addSubview:HUD];
    HUD.delegate = self;
    HUD.labelText = @"Adding User";
    HUD.detailsLabelText = @"Please Wait";
    [HUD showWhileExecuting:@selector(sendNewUserInformation) onTarget:self withObject:nil animated:YES];
}
Était-ce utile?

La solution

Vous pouvez utiliser la notification du clavier (il serait plus correct que la solution basée sur la minuterie):

[notificationCenter addObserver: self selector: @selector(keyboardDidHide:) name: UIKeyboardDidHideNotification object: nil];

Et montrer votre point de vue de progrès dans la méthode keyboardDidHide:.

Autres conseils

Si un petit délai serait vous travailler pourrait essayer le code suivant entre votre validation et votre instruction if où vous décidez si oui ou non vous montrer la vue des progrès.

Vous pouvez utiliser l'objet NSTimer:

[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(mumboJumbo:)userInfo:nil repeats:NO];

Et ajoutez votre code dans une méthode comme:

-(void)mumboJumbo:(id)sender{
    HUD = [[MBProgressHUD alloc] initWithView:self.view];
    [self.view addSubview:HUD];
    HUD.delegate = self;
    HUD.labelText = @"Adding User";
    HUD.detailsLabelText = @"Please Wait";
    [HUD showWhileExecuting:@selector(sendNewUserInformation) onTarget:self withObject:nil animated:YES];
}

Si je comprends bien votre problème qui devrait fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top