防止一次显示多个 UIPopover
Posted
技术标签:
【中文标题】防止一次显示多个 UIPopover【英文标题】:Prevent more than one UIPopover from being displayed at a time 【发布时间】:2013-05-21 14:51:25 【问题描述】:我的应用具有月度视图,并且对于该月中的每一天,长按都会显示一个弹出框。
我使用self.view setExclusiveTouch:YES
来防止一次出现多个弹出窗口,但偶尔仍允许出现多个弹出窗口。
如何?
谢谢
【问题讨论】:
【参考方案1】:首先声明一个 UIPopoverController 类型的属性(比如说 activePopover)。
在长按调用的方法中这样做:
if (self.activePopover != nil)
if (self.activePopover.popoverVisible)
[ self.activePopover dismissPopoverAnimated:YES];
self.activePopover = nil;
然后,当您在长按上分配 UIPopoverController 时,将其分配给 activePopover。 这样一来,您总是会关闭可见的弹出框,然后再呈现一个新的弹出框。
【讨论】:
谢谢。最后是最好的方法。我犯了一些愚蠢的错误,让我迷失了方向【参考方案2】:您可以禁用弹出框之外的任何交互,方法是在其呈现后将其passthroughViews
属性设置为空数组。
【讨论】:
谢谢。我认为这会奏效,但我犯了一些错误并感到困惑。最后,这不适合我的班级结构【参考方案3】:全局布尔标志呢?
将其创建为全局类或视图控制器中的属性,并在打开任何弹出窗口之前对其进行检查
用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
。
希望对你有帮助
【讨论】:
好主意。我试过了,但不知怎的,我仍然一次显示不止一个弹出窗口! 你在哪里/如何存储那个标志?似乎它可能正在失去它的价值,或者它没有正确设置为 'TRUE' 我正在研究解决方案。其他一些答案有好处,但不知何故,ios 似乎在我不允许第二个弹出框之前识别出额外的触摸。我认为这是一个时间问题 试试“self.popUpPresent = TRUE;”在你的 popUp 的“init”方法中......如果是时间问题,可能会有所帮助以上是关于防止一次显示多个 UIPopover的主要内容,如果未能解决你的问题,请参考以下文章