2011-08-20 22 views
9

iPadのポップオーバーがポップオーバーの外の画面に触れるたびに自動的に解除されないようにする方法があるのだろうか?もしそうでなければ、popoverが却下された時を知らせるために呼び出すことができる "popoverDidDismiss"に似た何らかのメソッドがありますか?UIPopoverが自動的に終了するのを停止する

答えて

25

はいできます。これは、アップルのマニュアルの外にあります。

Popoverビューの外にユーザータップがあるためにPopoverが解除されると、Popoverは自動的にそのデリゲートにその動作を通知します。デリゲートを提供する場合は、このオブジェクトを使用して、ポーバーオーバーの破棄を防止したり、解雇に応じて追加のアクションを実行することができます。 popoverControllerShouldDismissPopover:デリゲートメソッドを使用すると、ポップオーバーを実際に破棄するかどうかを制御できます。デリゲートがメソッドを実装していない場合、または実装がYESを返す場合、コントローラはポップオーバーを破棄してpopoverControllerDidDismissPopover:メッセージをデリゲートに送信します。ただ、ここではデリゲートメソッドにNO popoverControllerShouldDismissPopover:

を返す

はさらに読書のためのリンクです。あなたとあなたがポップオーバーを閉じ、あなたのポップオーバー内の特定のバーボタンアイテムや他の何かを割り当てることのためにそれをしない

Popover Guide

+0

感謝を却下したくない場合は、特定のビューに

self.modallnpopover = no;

を、それを却下する場合でも、uは

self.modallnpopover = yes;

を使用することができます応答。私はこれを実装しようとしたし、動作していないようです。 popoverの中のビューではなく、popoverが現れるビューのために.mに置くべきでしょうか? –

+0

これは動作しましたか?もしそうなら、どうですか?そうでない場合は、正解とマークされるのはなぜですか? – ngb

+0

View ControllerをPopover Controllerの代理人にすることを覚えましたか? –

4
- (BOOL) popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController 
{ 
    return NO; 
} 

+0

私はこれを実装しようとしたが、それは動作していないようです。 popoverの中のビューではなく、popoverが現れるビューのために.mに置くべきでしょうか? –

+0

はい。ヘッダーファイルにUIPopoverControllerDelegateを実装するよう指示しましたか? – Bourne

+0

そうだと思います。私は プロトコルを持っています。OptionsViewControllerDelegate - (void)didPick:(NSString *)string; end id delegate; および.m: 代理人を合成します。 と、ポップオーバーが表示されるファイルの.hにあります。 インターフェイスexampleViewController:UIViewController { UIPopoverController * popoverController;OptionsViewController * optionsViewController; } 次に、.m内のUIpopoverControllerとOptionsViewControllerを合成します。私は何か不足していますか?ありがとう。 –

1

あなたはそれを素早くため

関連する問題