我不确定这是否是罪魁祸首,但我对这个项目所做的最大改变是几天前升级到Swift 4。我知道我的UIAlertController消息在需要时显示多行,但今天我偶然意识到它们都变成了单行并且最后有省略号。由于我从API显示这些消息,因此我无法使用" \ n"。代码很简单;
let alert = UIAlertController(title: "Title", message: "Long message that must be shown as multiline", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action: UIAlertAction!) in
alert.dismiss(animated: true, completion: nil)
}))
present(alert, animated: true, completion: nil)
我查了一些其他相关问题,但没有一个对我有用。这个问题最近被问到同样的问题,但没有得到答案,并且有一个hacky解决方案作为解决方案发布;
非常感谢任何关于检查内容的建议。
答案 0 :(得分:5)
不知道为什么会掉线,但我在拔掉头发3天后发现了这个问题。在我使用的第三方Pod之一中有一个UILabel扩展。它的代码被标记为" Locked"所以我认为这就是为什么之前没有出现在搜索结果中的原因。我必须从他们的存储库下载所有pod的源代码并在里面搜索。它覆盖了默认UILabel的这些函数和属性,而不是创建自己的UILabel子类;
override open func draw(_ rect: CGRect) {}
override open var intrinsicContentSize: CGSize {}
由于UIAlertViewController使用UILabel来显示消息,我试图注释掉这些行,我的问题就消失了。如果有人遇到同样的问题,请在代码和嵌入式库源代码中搜索UILabel扩展名。