- (void) alertViewCancel: (UIAlertView *) Alertview wird nicht aufgerufen
-
20-09-2019 - |
Frage
Ich habe das Problem habe, dass die UIAlertViewDelegate Methode - (void) alertViewCancel: (UIAlertView *) Alertview wird nicht aufgerufen, wenn ich ein Alertview mit stornieren ist Taste abbrechen
.Schräge ist, dass die delegierte Methode - (void) Alertview:. (UIAlertView *) Alertview clickedButtonAtIndex: (NSInteger) buttonIndex funktioniert perfekt
Hat jemand eine Idee?
Vielen Dank im Voraus
Sean
- (void)alertViewCancel:(UIAlertView *)alertView
{
if(![self aBooleanMethod])
{
exit(0);
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
//some code
}
ich das nennen, wenn eine Schaltfläche geklickt wird:
- (void)ImagePickDone
{
UIAlertView *alertDone = [[UIAlertView alloc]
initWithTitle:@"Done"
message:@"Are u sure?"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles: @"Yes", nil];
[alertDone show];
[alertDone release];
}
Lösung
Die alertViewCancel wird verwendet für, wenn das System für Ihre Warnung Ansicht entlässt, nicht, wenn der Benutzer die Schaltfläche „Abbrechen“. Zitat von Apfel docs :
Optional können Sie implementieren die alertViewCancel: Methode nehmen die geeignete Aktion, wenn das System annulliert Ihre Warnung Ansicht. wenn die Delegierter führt dies nicht implementieren Verfahren ist das Standardverhalten simulieren den Benutzer Sie auf den Button Abbrechen Taste und Schließen der Ansicht.
Wenn Sie erfassen möchten, wenn der Benutzer die Schaltfläche „Abbrechen“ drückt sollten Sie die clickedButtonAtIndex Methode verwenden und überprüfen, ob die Index entspricht dem Index für die Taste. Um diesen Index Verwendung zu erhalten:
index = alertDone.cancelButtonIndex;
Andere Tipps
Sie können die auf dem Index 0 dieses Delegaten Abbrechen behandeln:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0){
//cancel button clicked. Do something here.
}
else{
//other button indexes clicked
}
}
Dies kann auf zwei Arten verbessert werden. Zuerst behandelt es nur den Fall, dass der Benutzer tatsächlich eine Schaltfläche geklickt hat. Es behandelt nicht die Situation, dass [myAlert dismissWithClickedButtonIndex:] genannt wird, oder dass der Alarm auf andere Weise entlassen. Zweitens Taste 0 ist nicht unbedingt die Abbruchtaste. In einer Warnung mit zwei Tasten, ist der linke bei Index 0 und das rechte ist am Index 1. Wenn Sie die Titel geändert, so dass die rechte Taste sagt „Abbrechen“, dann die Taste 1 logisch auf die Schaltfläche Abbrechen ist. Statt „willDismiss“ Sie können „didDismiss“ implementieren, die aufgerufen wird, nachdem der Dialog verschwunden ist und nicht vorher.
- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
{
if (buttonIndex == alertView.cancelButtonIndex)
{
//cancel button clicked. Do something here.
}
else
{
//other button indexes clicked
}
}