2013-05-21 34 views
0

我的应用程序每月都有一个视图,并且在每个月的每一天,在长按时,弹出窗口会显示。防止一次显示一个以上的UIPopover

我已经使用self.view setExclusiveTouch:YES来防止同时发生多个popover,但仍偶尔会允许多个popover。

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

感谢

回答

3

首先声明一个UIPopoverController类型的属性(让我们说activePopover)。

在该方法被称为长按做到这一点:

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

然后当你分配UIPopoverController长按它分配给activePopover。 这种方式,你总是忽视可见的popover,然后才提出一个新的。

+0

谢谢。最后是最好的办法。我犯了一些愚蠢的错误,使我的轨迹 –

0

您可以通过它的介绍后,其passthroughViews属性设置为空数组禁用外酥料饼的任何互动。

+0

谢谢。我认为这会奏效,但我犯了一些错误,并感到困惑。最后,这是不适合我的 –

0

全局布尔标志呢?

在全局类或在您的视图控制器创建为属性和与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

希望它有帮助

+0

伟大的想法。我尝试过,但不知何故,我仍然得到一次显示多个popover! –

+0

你在哪里/如何存储该标志?它似乎可能会失去它的价值,或者它不会正确设置为“真” – Marioea

+0

我正在寻求解决方案。其他一些答案有很好的一点,但它似乎似乎iOS承认额外的触摸之前,我可以不允许第二次popover。我认为这是一个时间问题 –