Ну, на самом деле 3, но один из них - UITextEffectsWindow
.Почему в моем приложении есть два UIWindows и почему первый скрыт?
Итак, я начал простое тестовое приложение.
AppDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
ViewController *controller = [[ViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
self.window.rootViewController = navController;
[self.window makeKeyAndVisible];
}
В ViewController я помечать вид:
self.view.tag = 999;
Когда я вхожу эту
NSLog(@"[UIApplication sharedApplication].windows = %@",[UIApplication sharedApplication].windows);
for (UIWindow* window in [UIApplication sharedApplication].windows) {
NSLog(@"tag = %d",window.rootViewController.view.tag);
}
я получаю это:
2015-04-04 08:59:44.440 SDK[45888:1495552] [UIApplication sharedApplication].windows = (
"<UIWindow: 0x7fc57371e1e0; frame = (0 0; 375 667); hidden = YES; gestureRecognizers = <NSArray: 0x7fc57371eb10>; layer = <UIWindowLayer: 0x7fc57371c2f0>>",
"<UIWindow: 0x7fc57352b0d0; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x7fc5750115f0>; layer = <UIWindowLayer: 0x7fc573526f20>>",
"<UITextEffectsWindow: 0x7fc5750260c0; frame = (0 0; 375 667); opaque = NO; gestureRecognizers = <NSArray: 0x7fc575026fb0>; layer = <UIWindowLayer: 0x7fc575026580>>"
)
2015-04-04 09:03:33.319 SDK[46643:1499077] tag = 999
2015-04-04 09:03:33.319 SDK[46643:1499077] tag = 0
2015-04-04 09:08:11.648 SDKVevo[47379:1501367] key
2015-04-04 09:03:33.319 SDK[46643:1499077] tag = 0
Как вы можете видеть, есть два UIWindows, и первый скрыт. Более того, тег первого - 999, так что VC I создается и устанавливается как root. Но как получилось, что это окно отмечено как скрытое? И почему в первую очередь есть два? И почему второе окно выходит из строя как keyWindow?
Когда я запускаю приложение, я на самом деле вижу экземпляр VC I и помечен как 999, но журналы говорят, что это часть не-KeyWindow, которая также является скрытым окном.
Вы начинаете со стандартного приложения с одним видом с помощью раскадровки? Если это так, раскадровка создает для вас одно окно, и вы создаете другое. – rdelmar