1

UIViewルート ビュー コントローラーのビューにを追加するコードがアプリに含まれています。このビューは半透明で、アプリケーション全体をカバーするモーダル オーバーレイとして機能します (ビューには、クリックするとスーパービューからビューが削除されるボタンが含まれています。これにより、ユーザーはメイン アプリケーションに戻ることができます)。

これは今まで問題なく機能していましたが、現在はUIPopoverControllers を使用しており、この同じモーダル オーバーレイを使用してメイン アプリケーションをブロックしようとしています。問題は、これがポップオーバーの上ではなく後ろUIViewに表示されることです。

サブビューをルートビューコントローラーのビューに追加して、表示されている s の上に表示されるようにする方法はありますがUIPopoverController、それらを却下することはありませんか?

4

1 に答える 1

1

UIPopoverControllerに関するリファレンスは次のように述べています。

「ポップオーバーコンテンツは、特別なタイプのウィンドウで既存のコンテンツの上に階層化されます。」

subviews-arrayのNSLoggingは、ビューがそれを表示するviewControllerのビュー階層に追加されていないことを示しています。私の見解では、あなたがやろうとしていることは不可能です。

ただし、ここにアイデアがあります。

ブロッキングUIViewをUIPopOverControllerのcontentViewControllerに追加し、それを使用してcontentViewControllerにプロパティを設定できます。

次に、実際にUIPopoverControllerを表示するメインのviewControllerをポップオーバーのデリゲートとして設定し、次のようにします。

- (void) popoverControllerShouldDismissPopover:(UIPopoverController*)popoverController
{
    if(popoverController.contentViewController.yourProperty)
    {
        return YES;
    }
    return NO;
}

これがあなたの現在の状況でどれほど役立つかはわかりませんが、おそらくそれはあなたを始めるのに役立ちます。

于 2012-05-05T08:32:25.040 に答える