3

iPad の (全画面) メイン ビューの上部にツールバーがあります。ツールバーには barButtonItem があり、これを押すとポップオーバーが表示されます。

ポップオーバーには、押されたときにデリゲート (メイン ビュー コントローラー) にポップオーバーを閉じてフル ページのモーダル ビューを表示するように指示する UIButton があります。

これはすべてうまくいきます。

モーダル ビューを閉じると、ポップオーバーが占める画面の領域 (メイン ビューとツールバー ボタンを含む) がタッチ イベントに応答しなくなります。

この問題は、デバイスを回転させると自動的に修正され、ランドスケープ モードでのみ発生します。

助言がありますか?

更新: このバグは、シミュレーターで実行している場合には発生せず、実際の iPad でのみ発生します。

フルスクリーンのモーダルビューを閉じる必要があるデリゲートメソッド..

- (void)fullScreenViewControllerDidFinish:(FullScreenWebViewController *)fullScreenWebView {
    [self dismissViewControllerAnimated:YES completion:^{
        [self setFullScreenWVC:nil];
        [[self view] setNeedsLayout]; //Does't fix the issue
    }];
}

更新: Instruments を使用して、サブビューをどのように配置しているかを iPad に表示してもらいました。モーダル ビューを閉じたときに iPad が縦向きであると考えているように見えますが、デバイスは明らかに横向きです。

ここに画像の説明を入力

4

2 に答える 2

2

問題を修正しました。

使っていた

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 

それ以外の

UIDeviceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

なんらかの理由で、iPad の向きが正しくありませんでした。

ご協力いただきありがとうございます。

于 2012-06-01T18:22:15.857 に答える
0

問題を誤解している可能性がありますが、モーダル ビューを閉じたら、メイン ビューで「setNeedsLayout」を呼び出すことをお勧めします。これにより、ビュー レイアウトの自動サイズ変更がトリガーされ、自動サイズ変更されていない場合は問題が解決する可能性があります。

詳細については、次のリンクをご覧ください。

http://developer.apple.com/library/ios/ipad/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instm/UIView/setNeedsLayout

于 2012-05-31T21:18:07.700 に答える