我有一个非常奇怪的方向问题。我在导航控制器下有一系列视图控制器。其中一个可以采取任何方向。当我离开方向时,我必须使用setOrientation。有趣的是,当转换发生在下一页时,旋转就会发生。除了单个案例之外,这通常不是问题 - 从UIDeviceOrientationPortraitUpsideDown到正常导致我所有顶级挂载的项目都迁移到大约八分之一的页面。
我认为有三种方法可以解决它:
这是我将新视图推送到堆栈代码:
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
ResultSelect_ViewController *resultSelect = [[ResultSelect_ViewController alloc] initWithNibName:@"ResultSelect" bundle:nil];
[self.navigationController pushViewController:resultSelect animated:YES];
其他人觉得奇怪的是,模拟器不允许你测试颠倒到肖像行为?
答案 0 :(得分:2)
请注意:Apple开始使用静态(可能是动态的)分析器和阻止使用私有方法的应用程序(例如setOrientation:
)进入商店。上周发生在我的一个朋友身上。
您是否尝试过针对iPhone OS 3.0构建并仅依赖shouldRotateToInterfaceOrientation:
?这种行为似乎是固定的(与2.x中的实现相比),并且 - 至少对我而言 - 是这项工作。
答案 1 :(得分:1)
通常,您不支持颠倒的方向。这似乎是标准的Apple应用程序行为并且有意义。颠倒的情况并不真正有用,可能会给用户造成混淆。
我们遇到了一个类似的问题,当翻阅倒置的情况时,子视图会在主视图中上下移动。我们刚刚停止支持颠倒,基本上解决了这个问题。
答案 2 :(得分:0)
从上下旋转到肖像时避免旋转错误的方法不是这样做的。相反,中途停止旋转两次(比如说UIDeviceOrientationLandscapeRight
)。计时的问题不是使用睡眠,而是实现didRotateFromInterfaceOrientation
并在此时触发第二次旋转(或推送到下一个视图)。