我有一个带有一些单词的表格视图,并且当设备旋转时我会呈现闪存卡样式的横向视图。我通过观察“UIDeviceOrientationDidChangeNotification”做到了。
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(openLandscapeMode) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
1)效果很好,很流畅,但问题是当我们在风景中时,我不希望视图控制器对围绕垂直轴的旋转做出反应,这样我就可以把手机放在桌子上仍然会在风景中。也许我应该以某种方式观察水平旋转,而不是设备方向?
-(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)第二个问题是在哪里删除观察者,如果这个控制器在标签栏中,我想在同一个标签栏中的另一个控制器中执行相同的转换,但是,当然,还有另一个横向视图?我在 viewWillDissappear 中尝试过,但它不能正常工作。非常感谢!