boo*_*hoo 21 uialertview dismiss ios
我有一个Utils类,当触发某些通知时会显示UIAlertView.有没有办法在展示一个新的UIAlertViews之前将其解雇?
当我使用应用程序进入后台时,我正在这样做
[self checkViews:application.windows];
Run Code Online (Sandbox Code Playgroud)
在applicationDidEnterBackground上
- (void)checkViews:(NSArray *)subviews {
Class AVClass = [UIAlertView class];
Class ASClass = [UIActionSheet class];
for (UIView * subview in subviews){
if ([subview isKindOfClass:AVClass]){
[(UIAlertView *)subview dismissWithClickedButtonIndex:[(UIAlertView *)subview cancelButtonIndex] animated:NO];
} else if ([subview isKindOfClass:ASClass]){
[(UIActionSheet *)subview dismissWithClickedButtonIndex:[(UIActionSheet *)subview cancelButtonIndex] animated:NO];
} else {
[self checkViews:subview.subviews];
}
}
}
Run Code Online (Sandbox Code Playgroud)
这使得applicationDidEnterBackground很容易,因为我可以使用application.windows
我可以使用AppDelegate或类似的东西来获取所有视图,循环它们并关闭任何UIAlertViews吗?
Ser*_*nsk 28
for (UIWindow* window in [UIApplication sharedApplication].windows) {
NSArray* subviews = window.subviews;
if ([subviews count] > 0)
if ([[subviews objectAtIndex:0] isKindOfClass:[UIAlertView class]])
[(UIAlertView *)[subviews objectAtIndex:0] dismissWithClickedButtonIndex:[(UIAlertView *)[subviews objectAtIndex:0] cancelButtonIndex] animated:NO];
}
Run Code Online (Sandbox Code Playgroud)
erk*_*diz 27
iOS6兼容版:
for (UIWindow* w in UIApplication.sharedApplication.windows)
for (NSObject* o in w.subviews)
if ([o isKindOfClass:UIAlertView.class])
[(UIAlertView*)o dismissWithClickedButtonIndex:[(UIAlertView*)o cancelButtonIndex] animated:YES];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19435 次 |
| 最近记录: |