web-dev-qa-db-ja.com

「サポートされている向きにはアプリケーションとの共通の向きはなく、shouldAutorotateはYESを返します」

* 私のビューはランドスケープモードです。画像を保存していて、その画像を元に戻したいのですが、コードが下にあり、「キャッチされていない例外「UIApplicationInvalidInterfaceOrientation」によるアプリの終了」、理由:「サポートされている向き」アプリケーションとの共通の方向性がなく、shouldAutorotateがYESを返します '"* 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];
              }`
15
virantporwal

shouldAutoRotateをNOに設定してみて、機能するかどうかを確認してください。

(推奨されない)shouldAutoRotateToInterfaceOrientationメソッドの代わりに、iOS 6.0以降ではshouldAutoRotateメソッドとsupportedInterfaceOrientationsメソッドを使用できます。

このようなもの -

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}


- (BOOL) shouldAutorotate {
    return YES;
}


- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}
16
vshall

横向きまたは縦向きの限られた向きのみをサポートしています。しかし、ビューコントローラーで別の向きを呼び出します。

サポートされている方向で次の画像を見ることができます。右向きと左向きのみサポートしているので、ポートレートを呼び出すと、エラーが表示されます。したがって、両方の向きをサポートしたい場合は、要約で変更します。

enter image description here

詳細についてはこの回答を参照してください。 お役に立てば幸いです。

[〜#〜]編集[〜#〜]

したがって、このコードをビューコントローラに配置する必要があります

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

このエラーは、plistでサポートされているインターフェースの向きと-(NSUInteger)supportedInterfaceOrientationsによって返される向きの間に不一致がある場合にスローされます

NSUIntegerによって返されるsupportedInterfaceOrientationsはUIInterfaceOrientationMaskでなければならないことに注意してください。-MASK-に注意してください。UIInterfaceOrientationi.s.oを単に返すというミスをしたことがあります。 ...マスク値(これはオートコンプリートです)

例えば.

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

UIImagePickerControllerまたはUIPopoverControllerを使用し、これらのerrorが発生する場合は、以下の解決策が適しています。

また、これらのエラーはiOS 6.0のみ

新しいものを作成UIImagePickerController'scategoryおよびadd

@implementation UIImagePickerController(custom)

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

それは私にとってはうまくいきます。

4
Paresh Navadiya

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);
}

サポートされる方向および自動回転方向同じである必要があります。

1
elroy

同じエラーが発生しました。次のリターンの競合する向きの1つ以上である可能性があります。

  • -Info.plistで、「サポートされているインターフェースの向き」のキーを確認してください。
  • プロジェクトナビゲーターからアプリをクリックして、概要ペインを確認します。
  • 他の人が述べたように、supportedInterfaceOrientationsメソッドが返すものを確認してください。

-Info.plistで「サポートされているインターフェイスの向き(iPad)」キーと「サポートされているインターフェイスの向き(iPhone)」キーを個別に明示的に定義することにより、私のデバイスを解決しました。

幸運を!

0
Joel Balmer

IOS 6.0では、アプリが横向きモードのみをサポートしている場合、UIImagePickerControllerをポップアップするとクラッシュします。

私の解決策は、以下のカテゴリをUIImagePickerControllerに追加することです。

@interface UIImagePickerController (oritation)

@end

@implementation UIImagePickerController (oritation)

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

@end
0
ZYiOS