开发秘籍中有一个allSubView(),
取应用程序的windows,
static NSArray * allSubviews(UIView * viewSuper)
{
NSArray * arraySubviews = viewSuper.subviews;
for (UIView * subView in viewSuper.subviews)
{
NSArray * arraySub = allSubviews(subView);
if (arraySub != nil)
{
arraySubviews = [arraySubviews arrayByAddingObjectsFromArray:arraySub];
}
}
return arraySubviews;
}
//========
NSMutableArray * arrayAlertView = [NSMutableArray arrayWithCapacity:0];
for (UIWindow * windowSub in [[UIApplication sharedApplication] windows])
{
for (UIView * viewSub in allSubviews(windowSub))
{
if ([viewSub isKindOfClass:[UIAlertView class]])
{
[arrayAlertView addObject:(UIAlertView *)viewSub];
}
}
}
for (UIAlertView * alertView in arrayAlertView)
{
for (UIView * viewSub in alertView.subviews)
{
if ([viewSub isKindOfClass:[UITextField class]])
{
[(UITextField *)viewSub resignFirstResponder];
}
}
[alertView dismissWithClickedButtonIndex:0 animated:YES];
}