1

非アクティブ状態が X 回続くと表示されるパスコード画面を表示しようとしています。ルート ビュー コントローラーで presentViewController:animated:completion: を使用すると、ポップオーバーが既に表示されている場合を除いて、期待どおりに動作します。バー ボタン アイテムから表示されるポップオーバーは、提示されたパスコード画面の上に表示されます。

ビュー コントローラを表示するときに、表示されているすべてのポップオーバーを閉じるか非表示にする方法はありますか?

4

3 に答える 3

1

最初のウィンドウの上に 2 番目のウィンドウを作成して追加します。2 番目のウィンドウにパスコード画面を表示します。これにより、最初のウィンドウのすべてのビューに表示されるようになります。パスコード画面を閉じるときは、必ず新しいウィンドウを削除して、1 つ目のキーを作り直してください。

于 2013-06-05T19:04:49.043 に答える
1

NSNotifications は、この問題に適したツールです。ポップオーバーを表示するすべてのビューまたはコントローラーで、たとえば、という名前の通知をリッスンし、通知が届いWillPresentPasscodeScreenたときにポップオーバーを閉じるメソッドを実装します。次に、パスコード VC を提示する前に、WillPresentPasscodeScreen通知を投稿します。ポップオーバーはもうありません。アプリのどこにいても。

于 2013-06-05T19:32:26.220 に答える
1

ポップオーバーへの参照はありますか? その後、あなたはただ呼び出すことができます

[popover dismissPopoverAnimated:NO];

パスコードオーバーレイを購入するとき。

編集

サブビューをループして、ポップオーバーを消すことができるかどうかを確認します。これは面倒なので、他の方法を見つけることをお勧めします。しかし、それは動作するはずです(テストされていません)。

for (UIView* view in self.view.subviews) {
    if([view respondsToSelector:@selector(dismissPopoverAnimated:)]){
        [(UIPopoverController*)view dismissPopoverAnimated:NO];
    }
}
于 2013-06-05T15:23:29.507 に答える