我有一个标签栏控制器管理4个标签。我已经将tab键控制器子类化,因此shouldAutorotateToInterfaceOrientation:方法只允许其中一个选项卡中的特定视图控制器旋转。一切都很好:其余标签中的控制器不会旋转。但是,当允许旋转的视图控制器实际旋转时,如果用户点击其中一个剩余的选项卡,相应的视图控制器也会显示为旋转(即使它的shouldAutorotateToInterfaceOrientation:方法显式返回NO)。
如何防止这种情况发生?
要清楚,这是一个例子。点击标签0,1或2并尝试旋转设备,没有任何反应(正确)。敲击标签4并旋转设备,与标签4的视图控制器相关联的视图被旋转(正确)。现在,仍然按住旋转的横向方向按住iPhone并点击另一个标签(0,1或2)显示旋转的视图(这是不正确的,我想避免的)。
答案 0 :(得分:1)
这是一个常见的“错误” - 但是一个好的解决方法是强制shouldAutorotateToInterfaceOrientation:
选择器按如下方式触发:
- (void)viewDidAppear:(BOOL)animated {
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
UIView *view = [window.subviews objectAtIndex:0];
[view removeFromSuperview];
[window addSubview:view];
}