代码之家  ›  专栏  ›  技术社区  ›  Kalle

在Portrait中提醒视图,iPad在Landscape中提醒视图,并且无法旋转到除“其他”横向以外的任何位置(180度)

  •  2
  • Kalle  · 技术社区  · 14 年前

    更新: 已解决。请参见底部的“修复”。

    在支持所有方向的iPad应用程序中,如果应用程序加载到横向,就会发生奇怪的事情:

    1. 警报视图以纵向显示,即使其余视图以横向显示。
    2. 将iPad从横向旋转到纵向不会触发旋转(也不会触发任何ShouldAutoRotate样式的方法)。
    3. 将ipad旋转180度(旋转到“其他横向”)确实会触发旋转,之后,ipad的行为就像正常的一样(即旋转时正确地旋转到纵向和横向)。

    下面的警报视图屏幕。奇怪,奇怪。你知道为什么会这样吗?它只在加载到景观中时发生——加载到肖像中,然后旋转到景观中工作得很好。

    解决方案: 出现此问题是因为我在应用程序完成加载后(更具体地说,在应用程序的 viewdidAppear: 方法)在主视图控制器的顶部添加了uiviewController(modally)。

    iOS发送了许多(4) shouldAutoToRotatePointerFaceOrientation: calls to the current/main view controller after things have started up,to figure out which orientations are currently supported.当我这么快添加另一个VC时,这发生在上述调用的中间。因此,我只接到一两个电话(“肖像”,因为它从肖像开始)。

    然后,主视图控制器对景观方向的默认支持为“否”,但新添加的视图控制器(也会询问有关方向的问题)现在很高兴地响应“是”。

    如果我删除了另一个VC(在横向),我就会意识到我的主视图控制器卡在纵向。所以我有一幅肖像画,上面有一幅风景画。警报和类似的注意到了前者的方向,因此造成了上述灾难性的结果。

    此外,如果我试图旋转到肖像,我不能,因为主视图控制器已经在肖像。旋转到景观也是不可能的,因为另一个视图控制器已经在景观。只有当我进行“横向”而另一个“旋转”时,两个视图控制器是否都同意需要旋转,从而使设备旋转。

    在我的例子中,修复方法是简单地将另一个控制器的创建延迟一点。使用 performselector:withobject:afterdelay.. --0似乎有效,但我只是把它放在1来确定。它看起来有点奇怪,先出现主VC,然后出现另一个VC,但它比上面的要好。

    1. 警报视图以纵向显示,即使其余视图以横向显示。
    2. 将iPad从横向旋转到纵向不会触发旋转(也不会触发任何ShouldAutoRotate风格的方法)。
    3. 将ipad旋转180度(旋转到“其他横向”)确实会触发旋转,之后,ipad的行为就像正常的一样(即旋转时正确地旋转到纵向和横向)。

    下面的警报视图屏幕。奇怪,奇怪。你知道为什么会这样吗?它只在加载到景观中时发生——加载到肖像中,然后旋转到景观中工作得很好。 Landtrait!

    解决方案: 出现此问题是因为应用程序加载完成后(更具体地说,在应用程序的 viewDidAppear: 方法)。

    iOS发送数(4) shouldAutorotateToInterfaceOrientation: 启动后调用当前/主视图控制器,以确定当前支持哪些方向。当我这么快添加另一个VC时,这发生在上述调用的中间。因此,我只接到一两个电话(“肖像”,因为它从肖像开始)。

    然后,主视图控制器对景观方向的默认支持为“否”,但新添加的视图控制器(也被询问方向)现在很高兴地回答“是”。

    如果我删除了另一个VC(在横向),我就会意识到我的主视图控制器卡在纵向。所以我有一幅肖像画,上面有一幅风景画。警报等都注意到了前者的方向,因此造成了上述灾难性的后果。

    此外,如果我试图旋转到肖像,我不能,因为主视图控制器已经在肖像。旋转到景观也是不可能的,因为另一个视图控制器已经在景观。只有当我做了“横向而另一个”旋转时,两个视图控制器都同意需要旋转,因此设备旋转。

    在我的例子中,修复方法是简单地将另一个控制器的创建延迟一点。使用 performSelector:withObject:afterDelay. --0似乎有效,但我只是把它放在1来确定。它看起来有点奇怪,主要的风险投资出现了,然后是其他风险投资,但它比上面的要好。

    2 回复  |  直到 9 年前
        1
  •  0
  •   Kalle    14 年前

        2
  •  0
  •   Thangavel    9 年前