切换rootviewcontroller时,当alertview可见时,窗口坐标会发生变化

时间:2014-04-28 13:06:45

标签: ios objective-c uinavigationcontroller landscape uiwindow

我面临新的UINavigationController窗口坐标作为窗口rootViewController的问题,所以我创建了一个简单的示例项目,它也会重现它。

我使用带有以下操作的按钮的初始ViewController启动应用程序:

    - (IBAction)buttonTapped:(id)sender {
    [[[UIAlertView alloc] initWithTitle:@"" message:@"New VC in 3 seconds" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];

    [self performSelector:@selector(delayCall) withObject:nil afterDelay:3];
}

    - (void)delayCall {

    NewViewController *nvc = [[NewViewController alloc] initWithNibName:@"NewViewController" bundle:nil];

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:nvc];

    [[UIApplication sharedApplication].keyWindow setRootViewController:nav];
}

NewViewController处于横向模式,但如果在更改窗口的UIAlertView之前显示rootViewController并且未被解除,则会显示在下面的屏幕截图中。

New VC with wrong coordinates(should have been in landscape mode)

如果我在更改AlertView之前未显示提醒视图或已关闭rootViewController,则新的ViewController会正常显示。

有什么办法可以防止这种情况发生吗?切换rootViewController并显示AlertView是我们正在创建的更大应用的一部分。不幸的是我们现在无法改变它,因此我们必须为此流程本身找到一些解决方法。

0 个答案:

没有答案