После отклонения ViewController мое представление остается в предыдущей ориентации контроллера представления в iOS7

Поскольку я работаю с приложением iOS, поддерживается только Portrait Orientation. Но я получаю некоторые проблемы, связанные с ориентацией.

  • Мое приложение поддерживает только портретную ориентацию

  • когда мой родитель P1.view нажимается с помощью навигации, он находится в портретном режиме, это нормально. Теперь из P1.view я просматриваю дочернее представление C1.view.

  • Теперь я в дочернем представлении C1.view и оттуда, используя делегат, я звоню

    -(void)imagePickerController:(UIImagePickerController *)выборщик

    [self.delegate openCamera];//вызывается из C1.view

    -(void)openCamera   //declared in P1.view
        {
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            picker.delegate = self;
            picker.allowsEditing = NO;
            picker.sourceType = UIImagePickerControllerSourceTypeCamera;>             
            [self presentModalViewController:picker animated:YES];
        }
    
  • Теперь, когда я делаю снимок в режиме Lanscape и убираю этот PresentModalViewController, мой вид отображается в режиме Landscap, а не в портретном режиме.

        - (BOOL)shouldAutorotate {
            return YES;
        }
        - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
         return (interfaceOrientation == UIInterfaceOrientationPortrait ||
                interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
        }
    
        - (NSUInteger)supportedInterfaceOrientations {    
            return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
        }
        - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
            return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
        }
    

Эти методы определены в обоих контроллерах представления (P1 и C1), а также вызываются при отклонении представления модели, но мой контроллер представления остается в альбомной ориентации, чего не должно происходить.

Этот код отлично работает в iOS6, но не в iOS7.


person utkal patel    schedule 26.06.2014    source источник
comment
Для iOS 7 вы должны использовать -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration Но это не будет работать в iOS 6.   -  person nikhil84    schedule 26.06.2014


Ответы (1)


Я думаю, что preferredInterfaceOrientationForPresentation не должен возвращать битовую маску. Вы можете попробовать:

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationPortrait; }

person spassas    schedule 26.06.2014