Я пытаюсь изменить вид при вращении, потому что мои взгляды должны значительно отличаться от портрета к ландшафту. Теперь код, который я использую, работает один раз, а затем приложение зависает при попытке вернуться назад. Любое направление не имеет значения. Например: если я нахожусь в альбомной ориентации и поворачиваюсь в портретную, все работает отлично, пока я не повернусь обратно в альбомную, тогда он зависает и абсолютно ничего не делает.
Вот код, который я использую для достижения этого
В моем методе "viewDidLoad"
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
Затем я вызываю это для вращения:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return YES;
}
- (void)didRotate:(NSNotification *)notification
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if ((orientation == UIDeviceOrientationLandscapeLeft) ||
(orientation == UIDeviceOrientationLandscapeLeft))
{
// present the other viewController, it's only viewable in landscape
[self.view addSubview:landScapeView];
}
if ((orientation == UIDeviceOrientationLandscapeRight) ||
(orientation == UIDeviceOrientationLandscapeRight))
{
// present the other viewController, it's only viewable in landscape
[self.view addSubview:landScapeView];
}
else if ((orientation == UIDeviceOrientationPortrait ||
(orientation == UIDeviceOrientationPortrait))
{
// get rid of the landscape controller
[self.view addSubview:portrait];
}
else if ((orientation == UIDeviceOrientationPortraitUpsideDown ||
(orientation == UIDeviceOrientationPortraitUpsideDown))
{
// get rid of the landscape controller
[self.view addSubview:portrait];
}
}
orientation
на одно и то же значение в каждом условииif/else
; вам следует упростить этот код. - person Shaggy Frog   schedule 24.06.2011