更新:已解决。请参阅底部的修复。
在支持所有方向的iPad应用程序中,如果该应用程序横向加载,则会发生奇怪的事情:
下面的警告视图屏幕。很奇怪任何想法为什么会发生这种情况?仅当横向加载时才发生-纵向加载然后旋转到横向效果很好。
Solution:
发生此问题的原因是,在应用程序完成加载后(更具体地说,在应用程序的viewDidAppear:
方法中),我在主视图控制器顶部(以模态方式)添加了UIViewController。 iOS在事情开始后向当前/主视图控制器发送了(4)个shouldAutorotateToInterfaceOrientation:
调用,以确定当前支持的方向。当我很快添加另一个VC时,这发生在上述调用的中间。因此,我只接到一个或两个电话(“肖像”,因为它以纵向开始)。
然后,主视图控制器在横向方向上默认支持“否”,但是新添加的视图控制器(也被询问方向)现在很高兴地回答“是”。
如果我删除了另一个VC(处于横向状态),我将意识到我的主视图控制器被卡在肖像中。所以我有一个人像视图,在它上面有一个风景视图。警报和此类信息注意了前者的方向,因此上述灾难性的结果。
另外,如果我尝试旋转为纵向,则无法进行,因为主视图控制器已经处于纵向状态。旋转到风景也是不可能的,因为另一个视图控制器已经在风景中。只有当我进行“横向旋转但又旋转另一个”时,两个视图控制器才同意需要旋转,因此设备旋转了。
我的解决方法是将其他控制器的创建稍微延迟一下。使用performSelector:withObject:afterDelay.
-0似乎可以工作,但是我只是将其设置为1。看起来有点怪异,出现了主要的vc,然后出现了另一个vc,但是比上面的要好。
更新:已解决。请参阅底部的修复。在支持所有方向的iPad应用程序中,如果该应用程序横向加载,则会发生奇怪的事情:警报视图以纵向显示,即使其余视图位于...
发生此问题的原因是,一旦应用程序完成加载(更具体地说,在应用程序的viewDidAppear:方法中),我就在主视图控制器顶部(以模态方式)添加了UIViewController。
使用UIAlertController
代替UIAlertview
。