У меня есть табличное представление с некоторыми словами, и я представляю пейзажное представление стиля флэш-карты, когда устройство вращается. Я сделал это, наблюдая "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, но он не работает должным образом.
Большое спасибо!