有没有办法从模式UIPopover显示消息(如UIAlertView)?

时间:2014-02-06 17:07:21

标签: ios7 uialertview uiactionsheet

我有一个在UIVIew中使用UIPopover的iPad应用程序;我需要在满足某个条件时显示警报类型的消息。

问题是在UIPopover中使用UIAlertView,当用户点击UIAlertView中的按钮时,它也会关闭UIPopover,这会破坏警报的目的。

我尝试使用UIActionSheets,但它们根本不显示,可能是因为它们没有从控制器类型的视图中调用。

有没有办法规避这种行为?

2 个答案:

答案 0 :(得分:2)

不,你不应该这样做。一旦你碰到任何其他东西,弹出器应该会消失。

您可以稍微放大弹出窗口并为状态消息腾出空间。当用户创建重叠的约会时,您可以在状态区域中显示消息。

或者,您可以解除弹出框并显示带有“确定”/“取消”按钮的警报。 “确定”按钮将创建重叠约会,取消按钮将丢弃它。

在等待用户决定如何处理警报时,您需要一些地方来保存来自弹出框的信息。也许让popover将消息传递回它来自的视图控制器,然后让源视图控制器创建警报,将自己设置为委托,并处理来自用户的响应。

答案 1 :(得分:1)

根据Apple的人机界面指南,可以在popover上显示UIAlertView:

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/MobileHIG/Alerts.html

具体引用:

  

在iPad上,不要在弹出框顶部显示模态视图。 随着   警报可能例外,不应该显示任何内容   酥料饼。

从弹出窗口显示UIAlertView不会自动关闭弹出窗口。可能有一些你自己的代码被执行导致它被解雇。例如,在我遇到的类似情况下,我发现在我的拆分视图控制器中显示UIAlertView正在调用“shouldAutorotate”,并且(由于早期的iOS错误)我在那里放置代码来解除popover。对于iOS7 +,这已不再需要了,所以我能够将此代码移动到willRotateToInterfaceOrientation中,在显示UIAlertView时它不再导致弹出窗口的解除,因为在这种情况下,即使“autoRotate”被调用“willRotateToInterfaceOrientation”也不会