Ou vous héritez votre classe de UIAlertView et ajoutez observateur NSNotification pour UIApplicationWillResignActiveNotification et lorsque la notification se produit appel à alertview méthode dismissWithClickedButtonIndex:
Exemple: .h
#import <UIKit/UIKit.h>
@interface ADAlertView : UIAlertView
@end
fichier .m
#import "ADAlertView.h"
@implementation ADAlertView
- (void) dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (id) initWithTitle:(NSString *)title
message:(NSString *)message
delegate:(id)delegate
cancelButtonTitle:(NSString *)cancelButtonTitle
otherButtonTitles:(NSString *)otherButtonTitles, ... {
self = [super initWithTitle:title
message:message
delegate:delegate
cancelButtonTitle:cancelButtonTitle
otherButtonTitles:otherButtonTitles, nil];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(dismiss:)
name:UIApplicationDidEnterBackgroundNotification
object:nil];
}
return self;
}
- (void) dismiss:(NSNotification *)notication {
[self dismissWithClickedButtonIndex:[self cancelButtonIndex] animated:YES];
}
@end
Avec votre propre classe héritée de UIAlertView, vous n'avez pas besoin Pour stocker un lien vers alertview ou autre chose, une seule chose que vous devez faire est de remplacer UIAlertView par ADAlertView (ou tout autre nom de classe). Ne hésitez pas à utiliser cet exemple de code (si vous ne l'utilisez ARC, vous devez ajouter à la méthode dealloc [super dealloc]
après [[NSNotificatioCenter defaultCenter] removeObserver:self]
)
Cela peut fonctionner, mais selon la documentation * "La classe UIAlertView est destinée à être utilisée telle quelle et ne supporte pas la sous-classe" *. –
de toute façon c'est mieux, que stocker un lien vers toutes les alertes, que vous devez dissmiss, lorsque l'application entre en arrière-plan –
@MartinR Je crois que son type de sous-classement est "sûr". Je pense que l'intention de la note dans les docs sur la sous-classe est d'empêcher les gens de sous-classer dans le but de modifier l'interface utilisateur ou d'effectuer d'autres opérations de déblayage non sécuritaires. – rmaddy