2011-01-30 14 views
2

私はStackOverflowには新しく、またobjective-cには新しいです。スタートアップの方向が間違っています

私は今何をすべきかのヒントを与える何かを見つけるために数週間を探してみましたが、質問をしなくてもこれを通過することはできません。シンプルであるように感じますが...

"rootView"コントローラのローテーションに問題があります。私はナビゲーションコントローラを使用することに決めた前に、それはランドスケープで表示されるはずです。シミュレーターは正しい向きで表示されますが、テキストが下から上、横に読み込まれるように、90度回転したビューが読み込まれていますので、頭を左に撫でる必要があります。ビューの一番左の部分は表示されますが、残りの部分は画面の上部に表示されます。これは大規模なプログラムです(私は、一般的には目的-cでそれを見つけていますが、それにも関わらず楽しんでいます...)が、重要なコード領域であると私が考えるものの要点は次のとおりです。

appDelegateでは、実装に続いて

// .h file: 
UIWindow *window; 
wordHelper3ViewController *viewController; 
UINavigationController *navigationController; 

:私は窓、私のrootViewcontroller、およびからNavControllerを作成

//.m file 
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    // Hide status bar 
    application.statusBarHidden = YES; 
     // --- Add the view controller's view to the window and display. 
    [window addSubview:viewController.view]; 
    [window addSubview:navigationController.view]; 
    [window makeKeyAndVisible]; 
    return YES; 
} 

は、その後、私はのdeallocでこれらのすべてを解放します。私のルートビューで

、私はこれをやっている:

// Override to allow orientations other than the default portrait orientation. 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    if (interfaceOrientation == UIInterfaceOrientationLandscapeRight){ 
     return YES; 
    } else { 
     return NO; 
    } 
} 

私が起こっていたかを確認するには、次のように実装し、私はすぐに起動時にログメッセージを取得しています:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{ 
    if (fromInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || fromInterfaceOrientation == UIInterfaceOrientationLandscapeRight) { 
     NSLog(@"didRotate..."); 
    } 
} 

これ以外にも、自分のコード内でビューに影響を与えるものは何もしていないと思います。ここで、InterfaceBuilderへ:

rootViewとナビゲーションコントローラの両方の属性インスペクタでは、向きが横向きに設定されています。参照元のアウトレットのrootViewの場合、「ビュー」はファイルの所有者に設定されます。ビュー(touchUpInside)にアタッチされたアクションもあります。ユーザーがバックグラウンドで任意の場所をクリックすると、FirstResponderをresignしたかったので、クラスをUIButtonに変更しました。

navigationControllerの場合は、「アウトレットの参照」の下に、navigationControllerから私のappDelegateへの接続が表示されます。

メインウィンドウxibでは、nav contollerがリストに表示され、ビューコントローラがそのサブビューとして表示されます。

viewcontrollerもメインウィンドウのオブジェクトリストに表示されます。

私にとって目立つのは、ウィンドウオブジェクトをダブルクリックすると、ITがポートレートモードで視覚的に表示されることです。

誰にもアイデアはありますか?

+0

その迷惑な、しかし私はすべての「ウィンドウ」で1つのサブビューを持つ、その後、(このケースでのViewController)その1つのサブビューを通じて、すべてを制御することにより、姿勢の問題を解決してきましたが、あなたはスクリーンショットを投稿気にしてくださいあなたの説明は少し不明です。スクリーンショットに取り組んで – Moshe

+0

は... – pereirap

+0

スクリーンショットは私のGoogleドキュメントページに掲載されている - ここにリンクです: https://docs.google.com/document/d/1kZMPTsqVT6yAdxCa1HPXu0jhZnDa4QOsJ3p9_wqYs5Q/edit?hl=en&authkey=CJf58PEG – pereirap

答えて

1

あなたの問題は、あなたのナビゲーションコントローラをサブビューとしてウィンドウに追加し、方向通知が「ウィンドウ」の最初のサブビューにのみ送られることだと思います。

代わりにこれを試してください。


//.m file 
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    // Hide status bar 
    application.statusBarHidden = YES; 
     // --- Add the view controller's view to the window and display. 
    [window addSubview:viewController.view]; 
    [viewController.view addSubview:navigationController.view]; 
    [window makeKeyAndVisible]; 
    return YES; 
} 
 

13

起動時の向きが初期のポートレートモードと異なるようにするには、info.plistファイルを編集する必要があります。 「intial interface orientation」のエントリを追加し、必要な値を設定します。ここで

はスクリーンショットです:

enter image description here

あなたはUINavigationControllerを回転させたい場合は、それはもう少し作業がかかります。詳細については、this similar question forを参照してください。

+0

Iすでにそれをしました。私の最初のインターフェイスの向きは、ランドスケープ(ホーム右ボタン)に設定されています – pereirap

+0

それは回転させる必要があるのは、UINavigationControllerです、と私は思います。私は関連する質問を見て、それが役立つかどうかを見てみましょう。あなたの注意をいただきありがとうございます、私はそれを感謝します。 – pereirap

+0

こんにちは - 私はそれを読んで、それは問題を解決しませんでした。 INterface Builderの実際のウィンドウオブジェクトをダブルクリックすると、縦向きに表示され、サイズインスペクタでサイズを変更しようとすると、それらがグレー表示になり、値が変更されなくなります。ウィンドウのオブジェクトの幅と高さを変更する必要があると私の勇気が伝えています。どのように私はこれを達成するかもしれないか誰にでも教えてくれますか? – pereirap

0

私は誤解だけど、この

// Override to allow orientations other than the default portrait orientation. 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    if (interfaceOrientation == UIInterfaceOrientationLandscapeRight){ 
     return YES; 
    } else { 
     return NO; 
    } 
} 

は本当にこの

// Override to allow orientations other than the default portrait orientation. 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
} 

すべきではない?なら、私を許して

+0

はい、それは実際に私が始めたことです、そしてそれは同じことをしました。それから私はそれを変更しました、その方法が実際に何をしているのかを理解するのが難しかったからです。私はそれが私にもっと意味をなさされるので、この方法でそれを残しました。しかし、はい、それは私が読んだすべてのドキュメンテーションで言うことですので、私はそれを元に戻します - あなたは正しい、ありがとう。 – pereirap

+0

それでも問題は解決していません。 – pereirap

+2

これらの2つの方法は同じことを行います。 – FreeAsInBeer

関連する問題