当我进入后台时,我需要一个系统来隐藏我应用中的所有UIAlertController
。目前,我为BaseViewController
所有注册为“输入背景”通知的UIViewControllers
人使用了UIAlertViewController
课程,并引用了BaseViewController
。如果弹出窗口显示可见,则此UIViewController
会隐藏弹出窗口。它有效,但不实用。
另一种方式是继承,但Apple医生说:
UIAlertController类旨在按原样使用,但不是 支持子类化。此类的视图层次结构是私有的 不得修改。
您是否有更好的解决方案,不涉及对包含UIAlertController
的{{1}}进行子类化?
答案 0 :(得分:2)
使用此代码,您需要获取顶视图控制器
使用此方法获取顶视图控制器
- (id)getTopViewController {
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
if (![topController isKindOfClass:[NSNull class]]) {
return topController;
}
}
- (void)applicationDidEnterBackground:(NSNotification *)notification {
UIViewController *viewOb = [self getTopViewController];
// check UIViewController is UIAlertController
if ([view isKindOfClass:[UIAlertController class]]) {
NSLog(@"%@",view);
[viewOb dismissViewControllerAnimated:YES completion:nil];
}
}
然后用顶级viewController解析ViewController