如何防止标签栏控制器中的视图控制器旋转?

时间:2009-10-22 09:33:26

标签: iphone rotation tabbarcontroller

我有一个标签栏控制器管理4个标签。我已经将tab键控制器子类化,因此shouldAutorotateToInterfaceOrientation:方法只允许其中一个选项卡中的特定视图控制器旋转。一切都很好:其余标签中的控制器不会旋转。但是,当允许旋转的视图控制器实际旋转时,如果用户点击其中一个剩余的选项卡,相应的视图控制器也会显示为旋转(即使它的shouldAutorotateToInterfaceOrientation:方法显式返回NO)。

如何防止这种情况发生?

要清楚,这是一个例子。点击标签0,1或2并尝试旋转设备,没有任何反应(正确)。敲击标签4并旋转设备,与标签4的视图控制器相关联的视图被旋转(正确)。现在,仍然按住旋转的横向方向按住iPhone并点击另一个标签(0,1或2)显示旋转的视图(这是不正确的,我想避免的)。

1 个答案:

答案 0 :(得分:1)

这是一个常见的“错误” - 但是一个好的解决方法是强制shouldAutorotateToInterfaceOrientation:选择器按如下方式触发:

- (void)viewDidAppear:(BOOL)animated {
    UIWindow *window = [[UIApplication sharedApplication] keyWindow];
    UIView *view = [window.subviews objectAtIndex:0];
    [view removeFromSuperview];
    [window addSubview:view];
}