Мое приложение основано на навигации.
Все режимы отображения отображаются в портретном режиме, кроме режима отчета. Режим отчета отображает альбомный режим, когда устройство поворачивается в альбомной ориентации.
Если устройство вращается в горизонтальном режиме, в режиме просмотра отчета отображается альбомный режим. Если отчет в альбомном режиме, еще раз поверните его в портретном режиме устройства. В этом случае будет отображаться обычный вид текущего вида.
Поток текущего действия мой вид дисплея.
Из текущего вида в режиме Портрет, и я вращаю устройство в альбомном режиме, поэтому получаю альбомный режим в режиме отчета. только после двух поворотов я получаю текущий вид в портретном режиме. Мне нужно уменьшить вращение буксира. пожалуйста, направь меня. Как проверить состояние для после ландшафтного режима отчета, если еще раз повернуть мне нужно, чтобы отобразить текущий вид в портретном режиме.
Here at ReportViewController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
@interface CurrentViewController
BOOL isShowingLandscapeView;
Report *landscapeViewController;
@implementation CurrentViewController
- (void)viewDidLoad
{
[super viewDidLoad];
Report *viewController = [[Report alloc]initWithNibName:@"Report" bundle:nil];
self.landscapeViewController = viewController;
[viewController release];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification object:nil];
}
- (void)orientationChanged:(NSNotification *)notification
{
[self performSelector:@selector(updateLandscapeView) withObject:nil afterDelay:0];
}
- (void)updateLandscapeView
{
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
if (UIDeviceOrientationIsLandscape(deviceOrientation) && !isShowingLandscapeView)
{
[self presentModalViewController:self.landscapeViewController animated:YES];
isShowingLandscapeView = YES;
}
else if(deviceOrientation == UIInterfaceOrientationPortrait && isShowingLandscapeView)
{
[self dismissModalViewControllerAnimated:YES];
isShowingLandscapeView = NO;
}
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait ); // support only portrait
}