setOrientation问题

时间:2009-11-13 08:27:02

标签: iphone interface-builder uinavigationcontroller pushviewcontroller setorientation

我有一个非常奇怪的方向问题。我在导航控制器下有一系列视图控制器。其中一个可以采取任何方向。当我离开方向时,我必须使用setOrientation。有趣的是,当转换发生在下一页时,旋转就会发生。除了单个案例之外,这通常不是问题 - 从UIDeviceOrientationPortraitUpsideDown到正常导致我所有顶级挂载的项目都迁移到大约八分之一的页面。

我认为有三种方法可以解决它:

  1. 以某种方式将setOrientation与我的分开 pushViewController调用(所以新视图不需要翻转)
  2. 设置我的项目 以更好的方式固定在设备的顶部 (我检查过它们似乎是)
  3. 重置上的元素上的Y维度 ViewDidLoad方法,但似乎错了。
  4. 这是我将新视图推送到堆栈代码:

    [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait]; 
    
    ResultSelect_ViewController *resultSelect = [[ResultSelect_ViewController alloc] initWithNibName:@"ResultSelect" bundle:nil];
    [self.navigationController pushViewController:resultSelect animated:YES];
    

    其他人觉得奇怪的是,模拟器不允许你测试颠倒到肖像行为?

3 个答案:

答案 0 :(得分:2)

请注意:Apple开始使用静态(可能是动态的)分析器和阻止使用私有方法的应用程序(例如setOrientation:)进入商店。上周发生在我的一个朋友身上。

您是否尝试过针对iPhone OS 3.0构建并仅依赖shouldRotateToInterfaceOrientation:?这种行为似乎是固定的(与2.x中的实现相比),并且 - 至少对我而言 - 是这项工作。

答案 1 :(得分:1)

通常,您不支持颠倒的方向。这似乎是标准的Apple应用程序行为并且有意义。颠倒的情况并不真正有用,可能会给用户造成混淆。

我们遇到了一个类似的问题,当翻阅倒置的情况时,子视图会在主视图中上下移动。我们刚刚停止支持颠倒,基本上解决了这个问题。

答案 2 :(得分:0)

从上下旋转到肖像时避免旋转错误的方法不是这样做的。相反,中途停止旋转两次(比如说UIDeviceOrientationLandscapeRight)。计时的问题不是使用睡眠,而是实现didRotateFromInterfaceOrientation并在此时触发第二次旋转(或推送到下一个视图)。