防止弹出框显示在呈现的视图上

时间:2013-06-05 15:03:30

标签: ios cocoa-touch uipopovercontroller presentmodalviewcontroller uipopover

我正在尝试显示X值不活动后出现的密码屏幕。我在根视图控制器上使用presentViewController:animated:completion:它按预期工作,除非已经显示了一个弹出窗口。从条形按钮项显示的弹出框出现在显示的密码屏幕上。

在呈现视图控制器时,有没有办法解除或隐藏所有可见的弹出窗口?

3 个答案:

答案 0 :(得分:1)

你有对popover的引用吗?然后你可以打电话

[popover dismissPopoverAnimated:NO];

当你去购买密码叠加时。

修改

循环浏览子视图,看看你是否可以使用弹出窗口。我真的建议尝试找一些其他的做事方式,因为这只是icky。但它应该工作(未经测试)。

for (UIView* view in self.view.subviews) {
    if([view respondsToSelector:@selector(dismissPopoverAnimated:)]){
        [(UIPopoverController*)view dismissPopoverAnimated:NO];
    }
}

答案 1 :(得分:1)

在第一个窗口上创建并添加第二个窗口。在第二个窗口中显示密码屏幕。这将允许它出现在第一个窗口的任何和所有视图上。当您关闭密码屏幕时,请务必删除新窗口并再次输入第一个密钥。

答案 2 :(得分:1)

NSNotification是解决此问题的好工具。让所有显示弹出窗口的视图或控制器都会侦听名为WillPresentPasscodeScreen的通知,并实现一种方法,在通知进入时解除弹出窗口。然后,在您出示密码VC之前,发布一个{{ 1}}通知 - 无论你在应用程序中的哪个位置,都不会有弹出窗口。