2011-08-20 100 views
9

我想知道是否有办法阻止iPad弹出窗口自动解除任何时候只要你触摸弹出窗口之外的屏幕?如果没有,是否有某种类似于“popoverDidDismiss”的方法,我可以调用该方法来告诉popover何时被解雇?停止UIPopover自动关闭

回答

25

是的,你可以。这是正确的Apple文档。

当由于用户在弹窗视图之外轻击而导致弹出消失时,弹窗会自动通知其操作的委托。如果您提供委托,则可以使用此对象来防止解除弹出窗口或针对解雇执行其他操作。使用委托方法,您可以控制是否实际上应排除弹出窗口。如果您的委托没有实现该方法,或者如果您的实现返回YES,则控制器将取消该弹出窗口,并向代理发送一条popoverControllerDidDismissPopover:消息。

只返回NO的委托方法popoverControllerShouldDismissPopover:

这里是进一步阅读的链接。

Popover Guide

+0

感谢您的快速回复。我试图实现这一点,它似乎并没有工作。我应该将它放在.m中,以显示弹出窗口的视图,而不是弹出窗口中的视图,对吗? –

+0

你有这个工作吗?如果是这样,怎么样?如果没有,为什么它被标记为正确答案? – ngb

+0

您是否记得使您的视图控制器成为popover控制器的代表? –

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

这会为你和你可以指定一个特定栏按钮的项目或别的东西在你的酥料饼驳回酥料饼。

+0

我试图实现这一点,它似乎并没有工作。我应该将它放在.m中,以显示弹出窗口的视图,而不是弹出窗口中的视图,对吗? –

+0

是的。你是否指示在头文件中实现UIPopoverControllerDelegate? – Bourne

+0

我这么认为。在包含popover内容的文件中,在.h中我有 协议OptionsViewControllerDelegate - (void)didPick:(NSString *)string; 结束 id委托; 和.m: 合成代表; 和弹出窗口出现的文件的.h我有: interface exampleViewController:UIViewController UIPopoverController * popoverController; OptionsViewController * optionsViewController; } 然后在.m中合成UIpopoverController和OptionsViewController。我错过了什么?谢谢。 –

1

甚至u可以使用

self.modallnpopover = yes;

,如果你想关闭它在特定视图

self.modallnpopover = no;

如果你不想关闭它