findUIAlertView而不参考它

我正在编写应用程序testing,并希望检查当前是否显示UIAlertView。 这意味着我没有指向它的指针,我需要知道显示的UIAlertView的所有者是谁,或者可以在哪个视图堆栈中find它。

[ 更新 ]其实下面的解决scheme不适用于iOS 7,因为警报视图不再绑定到特定的窗口。 阅读这里的细节: https : //stackoverflow.com/a/18703524/942107

基于KennyTM'mbuild议在另一个问题Sebastien提供了链接,我已经创build了一个UIAlertView类别与一个方法返回UIAlertView如果显示能够以编程方式解雇它。

UIAlertViewAdditions.h:

#import <UIKit/UIKit.h> @interface UIAlertView (UIAlertViewAdditions) + (UIAlertView *) getUIAlertViewIfShown; @end 

UIAlertViewAdditions.m:

 #import "UIAlertViewAdditions.h" @implementation UIAlertView (UIAlertViewAdditions) + (UIAlertView *) getUIAlertViewIfShown { if ([[[UIApplication sharedApplication] windows] count] == 1) { return nil; } UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:1]; if ([window.subviews count] > 0) { UIView *view = [window.subviews objectAtIndex:0]; if ([view isKindOfClass:[UIAlertView class]]) { return (UIAlertView *) view; } } return nil; } @end