防止一次显示多个UIPopover

时间:2013-05-21 14:51:25

标签: ios objective-c uiview uipopovercontroller uipopover

我的应用程序具有每月视图,并且对于该月中的每一天,长按,将显示弹出窗口。

我已经使用self.view setExclusiveTouch:YES来防止一次发生多个popover但仍然偶尔允许多个popovers。

如何防止一次显示多个UIPopover?

由于

3 个答案:

答案 0 :(得分:3)

首先声明UIPopoverController类型的属性(比如activePopover)。

在长按调用的方法中执行以下操作:

if (self.activePopover != nil)
{
    if (self.activePopover.popoverVisible)
        [ self.activePopover dismissPopoverAnimated:YES];
    self.activePopover = nil;
}

然后在长按分配UIPopoverController时将其分配给activePopover。 这样你总是会忽略一个可见的弹出框,然后才会出现一个新的弹出框。

答案 1 :(得分:0)

您可以通过在显示后将passthroughViews属性设置为空数组来禁用popover外的任何交互。

答案 2 :(得分:0)

全局布尔标志怎么样?

在全局类或viewcontroller中将其创建为属性,并在打开任何弹出窗口之前检查它

使用FALSE值初始化它,当您要打开弹出窗口时,只需检查其值:

//In the method that handle the long press to open the popup
if(!self.popUpPresent)
{
    //open the pop up
    [self openNewPopUp];
    //put the flag
    self.popUpPresent = TRUE;
}
else
//There is a popup opened, do another stuff or nothing.

每次关闭弹出窗口时,别忘了将其重新设置为FALSE

希望有所帮助