3

我有一个标签栏控制器管理 4 个标签。我对标签栏控制器进行了子类化,因此 shouldAutorotateToInterfaceOrientation: 方法只允许其中一个标签中的特定视图控制器旋转。一切正常:其余选项卡中的控制器不旋转。然而,当允许旋转的视图控制器实际旋转时,如果用户点击剩余的选项卡之一,相应的视图控制器也会出现旋转(即使它的 shouldAutorotateToInterfaceOrientation: 方法显式返回 NO)。

我该如何防止这种情况发生?

为了清楚起见,这里有一个例子。点击选项卡 0、1 或 2 并尝试旋转设备,没有任何反应(正确)。点击选项卡 4 并旋转设备,与选项卡 4 的视图控制器关联的视图被旋转(正确)。现在,仍然将 iPhone 保持在旋转的横向方向并点击另一个选项卡(0,1 或 2)会显示一个旋转的视图(这是不正确的,我试图避免)。

4

1 回答 1

1

这是一个通常报告的“错误” - 但是一个好的解决方法是强制shouldAutorotateToInterfaceOrientation:触发选择器,如下所示:

- (void)viewDidAppear:(BOOL)animated {
    UIWindow *window = [[UIApplication sharedApplication] keyWindow];
    UIView *view = [window.subviews objectAtIndex:0];
    [view removeFromSuperview];
    [window addSubview:view];
}
于 2011-01-31T16:24:59.267 回答