2012-02-26 49 views
1

私は単純なUIWebViewをViewControllerにネストしていますが、これはナビゲーションコントローラからモーダルに表示されます。この方向コードはなぜ機能しませんか?

構造を次のようにTableViewController - > TableViewController - >モーダル(WebViewのを提示) - >モーダル(ジェスチャーを介して提示オプション、ページカール)

をすべてのビューは、その上のWebViewと1以外のすべての向きを扱いますそれは構成を介してその向きを扱うことである。

ウェブビューのコントローラは、次のオリエンテーションコードを持っています

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    BOOL orientationSwitch = NO; 

    if([self.webApp.orientationLandscape boolValue] && 
     UIInterfaceOrientationIsLandscape(interfaceOrientation)) 
     orientationSwitch = YES; 

    if([self.webApp.orientationPortrait boolValue] && 
     UIInterfaceOrientationIsPortrait(interfaceOrientation)) 
     orientationSwitch = YES; 

    return orientationSwitch; 
} 

今の意図は、ビューは、姿勢変化に対応する必要がある場合になど、いくつかのオプションを設定することができるということです。そしてほとんどの部分は機能しますが、私はモーダルポップアップを持っています。ここでは、Webビューを含むモーダルを閉じることができます。これが起こると、アプリケーション全体で向きがロックされているようです。他のすべてのビューは、その後、どのような回転形式にも応答しません。

アイデア?

ありがとうございました

+0

orientationLandscapeとは何ですか?それは辞書の鍵ですか? – CodaFi

+0

これはNSNumberで囲まれたboolです。コアデータから。 – Slappy

答えて

3

ここに試してみましょう。 UIDeviceOrientationDidChangeNotificationのUIDeviceに登録し、通知の生成を開始するように指示します。通知が到着したら、UIViewControllerクラスメソッドattemptRotationToDeviceOrientation(iOS 5のみ)を呼び出します。また

それはあなたが間違ってここで何かやってすることができるように、このテクニカルノートを読むために役立つかもしれない:https://developer.apple.com/library/ios/#qa/qa1688/_index.html

+0

素晴らしい答えと素晴らしいリファレンス – Slappy

0

最初に、あなたのプロジェクトの設定で確認しては、右のサポートの向きがクリックされている(目標 - > appnameの - >概要)

なぜこれが起こっているのか分かりませんが、かなり前に同様の問題がありました。それは長い間前、イオス3.2か何か。 -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {} メソッドしか実装していないViewRotatorControllerを作成しました。他のすべてのViewControllerはそれを継承します。ちょうどあなたのwebappviewにこれの他の実装をさせ​​てください。おそらく最善の解決策ではありませんが、うまくいくはずです。

関連する問題