【发布时间】:2013-05-21 14:51:25
【问题描述】:
我的应用具有月度视图,并且对于该月中的每一天,长按都会显示一个弹出框。
我使用self.view setExclusiveTouch:YES 来防止一次出现多个弹出窗口,但偶尔仍允许出现多个弹出窗口。
如何防止一次显示多个 UIPopover?
谢谢
【问题讨论】:
标签: ios objective-c uiview uipopovercontroller uipopover
我的应用具有月度视图,并且对于该月中的每一天,长按都会显示一个弹出框。
我使用self.view setExclusiveTouch:YES 来防止一次出现多个弹出窗口,但偶尔仍允许出现多个弹出窗口。
如何防止一次显示多个 UIPopover?
谢谢
【问题讨论】:
标签: ios objective-c uiview uipopovercontroller uipopover
首先声明一个 UIPopoverController 类型的属性(比如说 activePopover)。
在长按调用的方法中这样做:
if (self.activePopover != nil)
{
if (self.activePopover.popoverVisible)
[ self.activePopover dismissPopoverAnimated:YES];
self.activePopover = nil;
}
然后,当您在长按上分配 UIPopoverController 时,将其分配给 activePopover。 这样一来,您总是会关闭可见的弹出框,然后再呈现一个新的弹出框。
【讨论】:
您可以禁用弹出框之外的任何交互,方法是在其呈现后将其passthroughViews 属性设置为空数组。
【讨论】:
全局布尔标志呢?
将其创建为全局类或视图控制器中的属性,并在打开任何弹出窗口之前对其进行检查
用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。
希望对你有帮助
【讨论】: