"Поддерживаемые ориентации не имеют общей ориентации с приложением, и shouldAutorotate возвращает ДА ​​'

* Мое мнение в режиме ландшафтного ландшафта. Я сохраняю изображение, и я хочу, чтобы это изображение было возвращено для этого, и мой код ниже, и я получаю ошибку. "Завершение приложения из-за неперехваченного исключения". UIApplicationInvalidInterfaceOrientation ", причина:" Поддерживаемые ориентации нет общей ориентации с приложением, и shouldAutorotate возвращает ДА ​​'* *, что я могу сделать для iphone?

        `- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

         [self dismissModalViewControllerAnimated:YES];
         [picker release];

              }
             - (void)imagePickerController:(UIImagePickerController *)picker 

                didFinishPickingMediaWithInfo:(NSDictionary *)info {

            [picker dismissModalViewControllerAnimated:NO];

                imageDoodle.image = [info objectForKey:@"UIImagePickerControllerMediaMetadata"];

                 }

               -(IBAction)loadfromalbumclicked:(id)sender

                 {

                UIImagePickerController * picker = [[UIImagePickerController alloc] init];

                picker.delegate = self;

                 picker.allowsEditing=NO;

        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;

               // self.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;

              [self presentModalViewController:picker animated:YES];
               }

              -(IBAction)savePrint{
//Save image to iOS Photo Library

                 UIImageWriteToSavedPhotosAlbum(imageDoodle.image, nil, nil, nil);
//Create message to explain image is saved to Photos app library
                 UIAlertView *savedAlert = [[UIAlertView alloc] initWithTitle:@"Saved"  

                message:@"Your picture has been saved to the photo library, view it in the 

               Photos app." delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
//Display message alert
             [savedAlert show];
              }`

Ответы

Ответ 1

попробуйте настроить shouldAutoRotate на NO и посмотреть, работает ли он.

Вы можете использовать методы shouldAutoRotate и supportedInterfaceOrientations в iOS 6.0 или новее, а не метод (устаревший) shouldAutoRotateToInterfaceOrientation.

Что-то вроде этого -

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}


- (BOOL) shouldAutorotate {
    return YES;
}


- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

Ответ 2

Вы поддерживаете только ограниченную ориентацию как пейзажной, так и портретной. Но вы вызываете другую ориентацию в своем контроллере вида.

Вы можете увидеть следующее изображение с поддерживаемой ориентацией. Он поддерживает только пейзаж справа и пейзаж слева. Так что, если я буду называть портретом, он покажет ошибку, как вы. Поэтому, если вы хотите поддержать обе ориентации, измените ее в сводке.

enter image description here

Подробнее см. этот ответ. Надеюсь, что это поможет.

ИЗМЕНИТЬ

Итак, вы должны поместить этот код в свой viewcontroller

  - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
  return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft |   UIInterfaceOrientationMaskLandscapeRight;
 }

Ответ 3

Эта ошибка возникает, если существует несоответствие между поддерживаемыми ориентациями интерфейса в plist и те, которые возвращаются -(NSUInteger)supportedInterfaceOrientations

Имейте в виду, что NSUInteger, возвращаемый supportedInterfaceOrientations, должен быть UIInterfaceOrientationMask, обратите внимание на -MASK-, я однажды допустил ошибку, просто вернув UIInterfaceOrientation i.s.o. значение... Маска (это автозаполнение для вас)

например.

- (NSUInteger) supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
    // and NOT UIInterfaceOrientationPortrait;
}

Ответ 4

Примечание. Если вы используете UIImagePickerController или UIPopoverController, и эти error возникают, то это ниже решение чертовски хорошо.

Кроме того, эта ошибка возникает только в iOS 6.0

Создайте новый UIImagePickerController's category и add

@implementation UIImagePickerController(custom)

  -(BOOL)shouldAutorotate
  {
    return NO;
  }
@end

Это работает для меня.

Ответ 5

Если вы используете cocos2d v2.1, вы можете попробовать это для Portrait.

    -(NSUInteger)supportedInterfaceOrientations {

    // iPhone only
    if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone )
        return UIInterfaceOrientationMaskPortrait;

    // iPad only
    return UIInterfaceOrientationMaskPortrait;
}

// Supported orientations. Customize it for your own needs
// Only valid on iOS 4 / 5. NOT VALID for iOS 6.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // iPhone only
    if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone )
        return UIInterfaceOrientationIsPortrait(interfaceOrientation);
    // iPad only
    // iPhone only
    return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}

Ориентации поддерживаются Ориентации и автоматически поворачиваются Ориентации должны быть одинаковыми.

Ответ 6

Для iOS 6.0, если ваше приложение поддерживает только ландшафтный режим, когда вы открываете UIImagePickerController, он будет аварийно завершен.

Мое решение добавляет категорию ниже в UIImagePickerController:

@interface UIImagePickerController (oritation)

@end

@implementation UIImagePickerController (oritation)

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

@end

Ответ 7

У меня была такая же ошибка, это может быть одна или несколько следующих обратных конфликтных ориентаций:

  • Проверьте свой -Info.plist, для ключевых "поддерживаемых ориентаций интерфейса"
  • Проверьте панель сводки, нажав на свое приложение из навигатора проекта.
  • Как уже упоминалось, проверьте, что возвращает метод supportedInterfaceOrientations.

Я решил использовать явное определение отдельных клавиш "Ориентированные интерфейсы (IPad)" и "Поддерживаемые интерфейсы ориентации интерфейса (iPhone)" в -Info.plist, поскольку мне нужны разные ориентации для разных устройств.

Удачи!

Ответ 8

Если вы пытаетесь вернуть NO в shouldAutorotate?