2

この問題は単純なものであるはずです...私はそれについて多くのことをグーグルで検索し、プロジェクトのすべてのセットアップを試しました。問題は、私が自分のものではないプロジェクトに取り組んでいるということです。アプリデリゲートからアプリを起動し、UIViewControllerコードですべてを (XIB ファイルなしで) 追加しています。ViewController は実際には横向きですが、問題はアプリが縦向きで実行されていることです (通知ビューをプルすると、縦向きモードのように下向きになります)。

これは AppDelegate.m ファイルに実装されています。

- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationLandscapeRight;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
 // Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
 }



- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{                                                                                                     

 return UIInterfaceOrientationMaskLandscapeRight|UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskPortrait; 

 //if i am writing only the landscape right orientation the app crashes!



}

* Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES' * First throw call stack: (0x3bfef2a3 0x35ede97f 0x3bfef1c5 0x3518988f 0x3532e579 0x3520dd3d 0x3520cfc7 0x3532f257 0xa5bc1 0x35188319 0x351a4f0f 0x351a4e97 0x3512aa33 libc++abi.dylib: 例外をスローして呼び出された終了

ポートレートモードで書いている場合、アプリが起動します。また、行を追加して、info.plist初期インターフェイスの向きの値のキーを横向き (右のホーム ボタン) に設定しようとしました。また、サポートされているインターフェイスの向きも lanscape にします。この変更は何もありません。ランドスケープモードで上から通知を受け取るためにその動作を取得する方法を知りたいだけです

誰でも、ありがとう!

4

1 に答える 1

0

アプリデリゲート.mファイルでこの方法を試してください...

    #define IOS_OLDER_THAN_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] < 6.0 )
    #define IOS_NEWER_OR_EQUAL_TO_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] >= 6.0 )



        - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
        {


            self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

            [NSThread sleepForTimeInterval:0.1]; // simulate waiting for server response

            // Override point for customization after application launch.

            self.viewController = [[[ViewController alloc] init] autorelease];

            // Initialise the navigation controller with the first view controller as its root view controller

            UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];

            // This is where we hide the navigation bar! :)

            [navigationController setNavigationBarHidden:NO];

            // Navigation controller has copy of view controller, so release our copy


               [self.viewController release];

            // Add the navigation controller as a subview of our window

            if ([[UIDevice currentDevice].systemVersion floatValue] < 6.0)
            {
                // how the view was configured before IOS6
                [self.window addSubview: navigationController.view];
               // [self.window makeKeyAndVisible];
            }
            else
            {
                // this is the code that will start the interface to rotate once again
        //        [self.window setRootViewController: self.navigationController];
                [self.window setRootViewController:navigationController];
            }

        //    [self.window setRootViewController:navigationController];
            [_window makeKeyAndVisible];
            return YES;
        }


    #ifdef IOS_OLDER_THAN_6
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
       // [image_signature setImage:[self resizeImage:image_signature.image]];
        return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft | toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
    }
    #endif

    #ifdef IOS_NEWER_OR_EQUAL_TO_6
    -(BOOL)shouldAutorotate {
        return YES;
    }
    - (NSUInteger)supportedInterfaceOrientations {
       // [image_signature setImage:[self resizeImage:image_signature.image]];
        //return UIInterfaceOrientationMaskLandscapeLeft;
        return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
    }
    #endif

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

** `

また、このコードをall viewcontroller.mファイルに書き留めます

`**

#define IOS_OLDER_THAN_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] < 6.0 )
#define IOS_NEWER_OR_EQUAL_TO_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] >= 6.0 )


#ifdef IOS_OLDER_THAN_6
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
   // [image_signature setImage:[self resizeImage:image_signature.image]];
    //return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft | toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
    if(toInterfaceOrientation ==UIInterfaceOrientationLandscapeLeft){
        NSLog(@"Changed Orientation To Landscape left");

        return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft);

    }else{
        NSLog(@"Changed Orientation To Landscape right");
        return (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
    }
}
#endif

#ifdef IOS_NEWER_OR_EQUAL_TO_6
-(BOOL)shouldAutorotate {
    return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
  //  [image_signature setImage:[self resizeImage:image_signature.image]];
    //return UIInterfaceOrientationMaskLandscapeLeft;
    return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
#endif
于 2012-12-17T09:11:07.350 に答える