1

I am attempting to display a passcode screen that appears after X amount of inactivity. I use presentViewController:animated:completion: on the root view controller, and it works as expected, except when a popover is already being displayed. The popover, displayed from a bar button item, appears over the presented passcode screen.

Is there a way to dismiss or hide all visible popovers when presenting a view controller?

4

3 回答 3

1

你有对弹出框的参考吗?然后你可以打电话

[popover dismissPopoverAnimated:NO];

当你去商店密码覆盖。

编辑

循环浏览子视图并查看是否可以关闭弹出窗口。我真的建议尝试找到一些其他的做事方式,因为这很恶心。但它应该可以工作(未经测试)。

for (UIView* view in self.view.subviews) {
    if([view respondsToSelector:@selector(dismissPopoverAnimated:)]){
        [(UIPopoverController*)view dismissPopoverAnimated:NO];
    }
}
于 2013-06-05T15:23:29.507 回答
1

NSNotifications 是解决这个问题的好工具。让所有显示弹出框的视图或控制器侦听名为 的通知WillPresentPasscodeScreen,并实现一个在通知进入时关闭弹出框的方法。然后,在您显示密码 VC 之前,发布WillPresentPasscodeScreen通知 - 不再有弹出框,无论您在应用程序中的哪个位置。

于 2013-06-05T19:32:26.220 回答
1

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

于 2013-06-05T19:04:49.043 回答