Objective c 如何正确切换到横向视图?

Objective c 如何正确切换到横向视图?,objective-c,ios,nsnotificationcenter,landscape-portrait,Objective C,Ios,Nsnotificationcenter,Landscape Portrait,我有一个带有一些单词的表视图,当设备旋转时,我会呈现闪存卡样式的横向视图。我是通过观察“UIDeviceOrientationIDChangeNotification”实现的 1) 这很好,很顺利,但问题是当我们在风景中时,我不希望viewcontroller对绕垂直轴旋转做出反应,这样我就可以把手机放在桌子上,它仍然在风景中。 也许我应该观察水平旋转,而不是设备定向 -(void)openLandscapeMode { if([[UIDevice currentDevice]orie

我有一个带有一些单词的表视图,当设备旋转时,我会呈现闪存卡样式的横向视图。我是通过观察“UIDeviceOrientationIDChangeNotification”实现的

1) 这很好,很顺利,但问题是当我们在风景中时,我不希望viewcontroller对绕垂直轴旋转做出反应,这样我就可以把手机放在桌子上,它仍然在风景中。 也许我应该观察水平旋转,而不是设备定向

-(void)openLandscapeMode
{

    if([[UIDevice currentDevice]orientation]==UIDeviceOrientationLandscapeLeft||[[UIDevice currentDevice]orientation]==UIDeviceOrientationLandscapeRight)
    {
        LandscapeCardViewController *landscape = [[LandscapeCardViewController alloc]init];
        landscape.words = words;
        landscape.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
        [self presentModalViewController:landscape animated:YES];
        NSLog(@"Switch to %@",[[NSUserDefaults standardUserDefaults]valueForKey:@"ChosenWordInCard"]);
        [landscape release];
    }
    else
    {
        [self dismissModalViewControllerAnimated:YES];  
        [[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationPortrait];

    }
}
2) 第二个问题是,如果此控制器位于选项卡栏中,并且我希望在同一选项卡栏中的另一个控制器中执行相同的转换,但是,当然,使用另一个横向视图,那么从何处删除observer? 我尝试在视图中显示,但无法正常工作。
非常感谢

对于第一个问题,您的viewcontroller中应该有一个方法,您可能需要编辑该方法以仅支持纵向

-(BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation {
return UIInterfaceOrientationPortrait(interfaceOrientation); //only allow portrait
}
这将阻止它自动旋转到横向,同时保持原始方法不变


第二次。过渡完成后呢?然后在视图再次出现时重新添加它。然后在您的横向控制器中,添加它以在设备为纵向时重新检测。

我找到了解决方案 如果([[UIDevice currentDevice]方向]==UIDeviceOrientation纵向| |[[UIDevice currentDevice]方向]==UIDeviceOrientation纵向上下)一切正常,我将else更改为
!
奇怪,但它是有效的


关于移除观察者-我在
中进行操作-如果我现在不在横向视图中,视图将显示
,检查。

关于第一部分-我的控制器已经只支持portait方向,但问题是,当我将iphone倾斜到水平状态时,它会显示他在纵向。因此,仅仅对方向作出反应并不能产生理想的效果。我认为,一些旋转控制可能会有所帮助,但这可能只适用于陀螺,是吗?
-(BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation {
return UIInterfaceOrientationPortrait(interfaceOrientation); //only allow portrait
}