- (void) alertViewCancel: (UIAlertView *) alertView wird nicht aufgerufen

8

Ich habe das Problem, dass die UIAlertViewDelegate-Methode - (void) alertViewCancel: (UIAlertView *) alertView nicht aufgerufen wird, wenn ich eine AlertView mit der Abbrechen-Schaltfläche abbringe.

Seltsam ist, dass die Delegate-Methode - (void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex perfekt funktioniert.

Hat jemand eine Idee?

Vielen Dank im Voraus Sean

%Vor%

Ich rufe dies auf, wenn auf eine Schaltfläche geklickt wird:

%Vor%     
Sean 15.03.2010, 15:26
quelle

3 Antworten

11

Der AlertViewCancel wird verwendet, wenn das System Ihre Alarmansicht ablehnt, nicht wenn der Benutzer die Schaltfläche "Abbrechen" drückt. Zitat aus Apple-Dokumentation :

  

Optional können Sie das implementieren   alertViewCancel: Methode zur Übernahme der   geeignete Aktion, wenn das System   Annulliert Ihre Alarmansicht. Wenn die   Delegate implementiert dies nicht   Methode ist das Standardverhalten zu   Simulieren Sie den Benutzer, indem Sie auf Abbrechen klicken   und schließen Sie die Ansicht.

Wenn Sie erfassen möchten, wenn der Benutzer die Schaltfläche "Abbrechen" drückt, sollten Sie die Methode clickedButtonAtIndex verwenden und prüfen, ob der Index dem Index für die Schaltfläche Abbrechen entspricht. Um diesen Index zu erhalten, verwenden Sie:

%Vor%     
pheelicks 15.03.2010, 15:50
quelle
2

Sie können den Abbruch am Index 0 dieses Delegaten behandeln:

%Vor%     
Hoang Pham 16.03.2010 15:18
quelle
0

Dies kann auf zwei Arten verbessert werden. Erstens behandelt es nur den Fall, dass der Benutzer tatsächlich auf eine Schaltfläche geklickt hat. Es behandelt nicht die Situation, dass [myAlert kündigenWithClickedButtonIndex:] aufgerufen wird, oder dass die Warnung auf eine andere Weise abgewiesen wird. Zweitens, Button 0 ist nicht unbedingt der Abbrechen-Button. In einer Warnung mit zwei Schaltflächen befindet sich die linke auf Index 0 und die rechte auf Index 1. Wenn Sie die Titel so geändert haben, dass die rechte Schaltfläche "Abbrechen" anzeigt, ist Schaltfläche 1 logisch die Schaltfläche Abbrechen. Anstelle von "willDismiss" können Sie "didDississ" implementieren, das nach dem Verschwinden des Dialogs aufgerufen wird und nicht vorher.

%Vor%     
Chris 17.10.2013 18:49
quelle