Frage

Ich habe ein Problem mit meinem Speicherknopf in einem modalen Uinavcontroller. Wenn ich die Schaltfläche Speichern drücke, lehne ich die Tastatur ab, wenn sie noch oben ist, die Daten über die Textfelder validiere und dann eine uiprogressview ansuche, während ich meine Informationen aussende.

Mein Problem ist, dass die Tastatur nicht schnell genug aus dem Weg steigt, sodass die Tastatur immer noch in der Tastatur ist, wenn es Zeit ist, die uiprogressview zu zeigen, und es wird ganz unten meiner Ansicht hinzugefügt und es sieht dumm aus.

Ich kann die Rückkehrtaste und die Tastatur abtropfen lassen und dann speichern, keine Probleme. Wenn der Benutzer jedoch die Tastaturrückgabe -Taste überspringt und nach rechts rechts speichern wird, habe ich Probleme.

Idealerweise möchte ich eine kurze Warteaussage implementieren, damit sie außer Sichtweite gerät. Oder führen Sie meine Validierung nach einer Verzögerung durch, aber nichts, was ich ausprobiert habe, ist funktioniert. Bitte helfen Sie.

Codebeispiel:

// 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];
}
War es hilfreich?

Lösung

Sie können eine Tastaturbenachrichtigung verwenden (sie wäre eine korrektere Lösung als auf dem Timer):

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

Und zeigen Sie Ihre Fortschrittsansicht in keyboardDidHide: Methode.

Andere Tipps

Wenn eine kleine Verzögerung funktionieren würde, können Sie den folgenden Code zwischen Ihrer Validierung und Ihrer If -Anweisung ausprobieren, in der Sie entscheiden, ob Sie die Fortschrittsansicht anzeigen oder nicht.

Sie können das Nstimer -Objekt verwenden:

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

Und fügen Sie Ihren Code in eine Methode hinzu wie:

-(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];
}

Wenn ich Ihr Problem richtig verstanden habe, sollte das funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top