如何在 iOS 8 上显示没有按钮的 UIAlertView?

Posted

技术标签:

【中文标题】如何在 iOS 8 上显示没有按钮的 UIAlertView?【英文标题】:How to display UIAlertView without buttons on iOS 8? 【发布时间】:2014-08-28 12:39:38 【问题描述】:

在我正在开发的应用程序中,我们有一些遗留代码在应用程序的多个点显示定时 UIAlertViews。这些是在消失之前显示一定时间(比如 2 秒)的警报视图。

这些警报视图没有按钮,只有标题和消息。不知何故,这些警报视图在 ios 5、6 和 7 上运行良好,但在 iOS 8 上不再显示消息标签。

有没有人能解决这个问题?我应该注意我们对使用 UIAlertController 不感兴趣,因为该类仅限于 iOS 8,而且我们还需要支持旧版本。

所以我的问题如下:是否可以在 iOS 8 上显示仅带有标题和消息以及 NO 按钮的 UIAlertView? (请注意:消息应该正确显示)。

【问题讨论】:

显示用于显示这些警报的代码。它是用 initWithTitle... 构建的吗?论据是什么? 我可以使用 Xcode 6b6 重现它。这显然是一个错误。 我也有同样的问题。 @MarekR:我在下面描述了我解决此问题的方法。我应该注意我不能共享任何代码(我的雇主不允许)。 我真的很高兴你添加了(PLEASE NOTE: the message should be shown properly),即将发布一个令人尴尬的无用答案嘿 【参考方案1】:

对于仍在为这个问题苦苦挣扎的人,我使用了以下方法:

我创建了一个 AlertController 类来决定使用哪个版本的警报视图。对于 iOS 7 及更低版本,将默认使用“内置”UIAlertView。对于 iOS 8,我使用了自定义警报视图。

有几个自定义警报视图可用于创建显示几秒钟的模式对话框。我的自定义警报视图基于iOS Custom Alert View 项目中的代码。此外,我修复了外观和感觉。可以说,这个项目的默认外观与 iOS 7 / 8 的外观和感觉并不紧密匹配,尤其是在按钮方面。弹出/隐藏动画虽然做得很好。修复外观需要创建一个自定义对话框视图类,该类使用-drawRect: 在按钮周围绘制线条。自定义子视图还将添加它自己的按钮。

SDCAlertView 是另一个可能具有更好的开箱即用外观和感觉的替代项目。如果我在开始修复 iOS 自定义 AlertView 的工作之前找到了 SDCAlertView,我可能会节省一些时间。

我应该注意我不能分享我的代码/更改。我的雇主根本不喜欢这样。

【讨论】:

【参考方案2】:

您可以为您的 UIAlert 尝试此代码:

        let alert = UIAlertView()
        alert.title = "Title"
        alert.message = "Message"
        alert.show()

它应该显示一个没有按钮的 UIAlert。

希望对你有帮助。

【讨论】:

以上是关于如何在 iOS 8 上显示没有按钮的 UIAlertView?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 的警报中为按钮添加操作

iOS 8.4 中的 Apple 支付按钮

iOS 8 上的 UIActivityViewController 显示带有自定义活动的“更多”按钮

如何在 ios 8 中获取键盘位置并在 numberPad 上添加 DONE 按钮

标签在按钮上,如何在iOS7中突出显示按钮按下的文本?

设备上的 iOS 8 自定义键盘