2012-11-01 56 views
1

因此,我创建并在我的iOS应用程序中显示自定义窗口,因为我正在编写动态警报视图,其功能类似于咆哮/吐司警报。它在ios6 AWESOMELY(希望我可以开源这个宝贝,你可以全部检查出来)iOS5自定义窗口旋转问题

但无论如何,当我在ios5中运行这个,我的警报存在的窗口似乎不旋转设备/模拟器。无论如何,我的自定义窗口保持纵向模式。

UIWindow只是一个UIView子类,所以没有很好的'shouldRotate'委托方法。

我有点难倒这是为什么在iOS5中发生,但

回答

0

它通常不推荐的UIWindow两个用多个实例在一个iOS应用并不6.任何帮助,将不胜感激^ _ ^。唯一有效的理由是支持外部屏幕。您应该使用UIView代替,理想情况下由UIViewController管理。我假设,(因为你没有提供任何代码,我只能假设)你的窗口不“旋转”的原因是,它根本没有得到关于设备旋转的任何通知。只有keyWindow默认收到它们。

我强烈建议您重新设计您的应用,以便使用正确管理的UIView。如果你因为某种原因拼命想不想这样做,那么你必须注册你的实例UIWindow以接收UIDeviceOrientationDidChangeNotification然后(在处理程序中)评估新的方向,并相应地改变窗口的框架(加上其他的东西需要根据方向变化来完成)

+0

所以我使用窗口的原因是因为我们正在编写自己的自定义警报和咆哮消息。我们需要它弹出键盘和一切,而UIWindow是完美的工具(.windowLevel = UIWindowLevelAlert:D) 所以,是的,这不是建议的,但为了完成我们要做的事情,我不得不。我的警报很酷,不过你可以在视图中或在这个新的自定义窗口中显示它:-D并且,在ios6中,一切都很好,我不明白为什么ios5会中断。 我会研究注册自定义窗口中的旋转事件。 –

1

我的窗口有一个rootviewcontroller,我完全忘了。我只是需要实施

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{ 
    return YES; 
} 

为了得到它的工作。

:-D