我有一个在UIVIew中使用UIPopover的iPad应用程序;我需要在满足某个条件时显示警报类型的消息。
问题是在UIPopover中使用UIAlertView,当用户点击UIAlertView中的按钮时,它也会关闭UIPopover,这会破坏警报的目的。
我尝试使用UIActionSheets,但它们根本不显示,可能是因为它们没有从控制器类型的视图中调用。
有没有办法规避这种行为?
答案 0 :(得分:2)
不,你不应该这样做。一旦你碰到任何其他东西,弹出器应该会消失。
您可以稍微放大弹出窗口并为状态消息腾出空间。当用户创建重叠的约会时,您可以在状态区域中显示消息。
或者,您可以解除弹出框并显示带有“确定”/“取消”按钮的警报。 “确定”按钮将创建重叠约会,取消按钮将丢弃它。
在等待用户决定如何处理警报时,您需要一些地方来保存来自弹出框的信息。也许让popover将消息传递回它来自的视图控制器,然后让源视图控制器创建警报,将自己设置为委托,并处理来自用户的响应。
答案 1 :(得分:1)
根据Apple的人机界面指南,可以在popover上显示UIAlertView:
具体引用:
在iPad上,不要在弹出框顶部显示模态视图。 随着 警报可能例外,不应该显示任何内容 酥料饼。
从弹出窗口显示UIAlertView不会自动关闭弹出窗口。可能有一些你自己的代码被执行导致它被解雇。例如,在我遇到的类似情况下,我发现在我的拆分视图控制器中显示UIAlertView正在调用“shouldAutorotate”,并且(由于早期的iOS错误)我在那里放置代码来解除popover。对于iOS7 +,这已不再需要了,所以我能够将此代码移动到willRotateToInterfaceOrientation中,在显示UIAlertView时它不再导致弹出窗口的解除,因为在这种情况下,即使“autoRotate”被调用“willRotateToInterfaceOrientation”也不会