2 Stimmen

Die Methode alertViewCancel: des Delegierten von UIAlertView wird nicht aufgerufen.

Das Protokoll UIAlertViewDelegate besagt folgendes:

// Wird aufgerufen, wenn wir eine Ansicht abbrechen (z. B. wenn der Benutzer auf die Home-Taste klickt). Dies wird nicht aufgerufen, wenn der Benutzer auf die Abbrechen-Schaltfläche klickt.
// Wenn nicht im Delegaten definiert, simulieren wir einen Klick in die Abbrechen-Schaltfläche
- (void)alertViewCancel:(UIAlertView *)alertView;

Ich habe jedoch ein UIAlertView, das angezeigt wird, und wenn ich jetzt die Home-Taste im Simulator drücke, wird die Methode alertViewCancel: nicht aufgerufen. Bitte beachten Sie, dass die Delegate-Methode alertView:clickedButtonAtIndex: aufgerufen wird, wenn ich eine Schaltfläche auf dem AlertView berühre, sodass der Delegat korrekt verbunden ist.

Ist dies ein Bug auf der Seite von Apple oder liegt es an mir, oder vielleicht am Simulator?

Bearbeiten:

Ich umgehe dieses Problem derzeit, indem ich auf die Benachrichtigung UIApplicationWillResignActiveNotification höre, bei der ich das folgende mache, um den AlertView zu entfernen:

[self.currentAlert dismissWithClickedButtonIndex:-1 animated:NO];
[self.currentAlert release];
self.currentAlert = nil;

3voto

Adam Wright Punkte 48270

Es wird aufgerufen, wenn das System tatsächlich Ihren Alert-View abbricht. Ihr Alert-View wird nicht mehr abgebrochen, wenn Ihre Anwendung im Hintergrund läuft, es sei denn, Ihre App wird vom Flotsam-Prozess verdrängt. Wenn Sie wieder in den Vordergrund treten, wird Ihr Alert-View erneut angezeigt. Ich vermute, obwohl ich es nicht sicher weiß, dass Sie diesen Delegat-Aufruf als Teil der Abbauabfolge erhalten, wenn Flotsam Ihren Prozess beendet.

Die Dokumentation ist wahrscheinlich in diesem Punkt ein wenig irreführend. Früher brachen Alert-Views ab, wenn die Home-Taste gedrückt wurde, aber das ist nicht mehr immer der Fall.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X