Я создал UIViewController (на основе Как переключать виды при вращении ), чтобы переключаться между 2 видами при вращении устройства.Каждое представление является «специализированным» для определенной ориентации.
. Оно использует уведомление UIDeviceOrientationDidChangeNotification для переключения представлений:
-(void) deviceDidRotate: (NSNotification *) aNotification{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
NSLog(@"Device rotated to %d!", orientation);
if ((orientation == UIDeviceOrientationPortrait) ||
(orientation == UIDeviceOrientationPortraitUpsideDown)) {
[self displayView:self.portraitViewController.view];
}else if ((orientation == UIDeviceOrientationLandscapeLeft) ||
(orientation == UIDeviceOrientationLandscapeRight)) {
[self displayView:self.landscapeViewController.view];
}
}
и вида работ.Проблемы проявляются, когда я поворачиваюсь в альбомную ориентацию, а затем обратно в портретную.При возврате к портрету подпредставления не отображаются в нужном месте, особенно UIPickerView:
Портрет в первый раз :
Повернуть вПейзаж :
Назад к портрету :
Если я повторю процесс поворота, все будет только хуже.Что я делаю не так?
Исходный код здесь: http://dl.dropbox.com/u/3978473/forums/Rotator.zip
Заранее спасибо!