多行 UIAlertView 消息崩溃
Posted
技术标签:
【中文标题】多行 UIAlertView 消息崩溃【英文标题】:Crash with multiline UIAlertView message 【发布时间】:2013-05-08 07:20:56 【问题描述】:崩溃日志
-[UIAlertView displayScrollerIndicators]: unrecognized selector sent to instance 0x1fbaf120
代码是:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Some info",nil) message:str delegate:self cancelButtonTitle:NSLocalizedString(@"Close", nil) otherButtonTitles: nil];
alert.tag = 12345;
[alert show];
其中str
是带有\n
字符的巨大多行文本。
【问题讨论】:
您将 alertview 对象放置在 scrollView 对象的位置 在你的班级中搜索displayScrollerIndicators
的出现检查你是否没有用alert's
对象调用它。
请提供str
的值,以便重现问题。
@rptwsthi UIAlertView 在文本行数等于或大于 13 时调用 displayScrollerIndicators。它不再显示可滚动的文本视图,它只是崩溃!
【参考方案1】:
有趣...这似乎是 UIAlertView
类中的错误。
我刚刚做了一个快速测试,显示 UIAlertView
包含多行消息 - 在 iPad 模拟器 (ios 6.1) 上,警报视图在显示 13 行或更多行时中断。似乎在 12 行之后警报视图不再变大,并且显然发生了一些错误,因为它认为它必须滚动,但没有可用的滚动视图。
所以,请确保在 UIAlertView 中显示的行数不超过 12 行...
更新:
我刚刚做了另一个测试 - 我发现崩溃不是(仅)与行数有关,而是与警报视图的 tag
属性的设置有关 - 当您没有设置 @987654324 @,它仍然可以工作并显示一个滚动视图 - 只是当你设置一个标签时,它会崩溃超过 12 行......奇怪。
更新 2(也是最后一个):
似乎如果tag
的整数值小于 12345(我测试了 1,12,123,1234)它也可以工作 - 只是更高的tag
值会导致崩溃。仍然很奇怪,因为tag
属性是NSInteger
,因此应该至少有 32 位,所以 12345 应该没有任何问题溢出明智...
【讨论】:
在以前版本的 iOS 中,当消息为 13 行或更多行时,UIAlertView 中会出现可滚动的文本视图,现在它只是崩溃了...看起来有警报视图错误 哇,难以置信 :) 感谢您的帮助 谢谢.. 标签 12345 导致我在 iOS6 中崩溃(错误).. 而在 iOS7 中它可以在没有任何变化的情况下工作..【参考方案2】:您在代码中的某处使用UIAlertView object
调用displayScrollerIndicators
【讨论】:
【参考方案3】:我认为您做错了什么。您正在使用UIAlertView
的对象调用其他类方法。而且你不能调用这个方法,因为这个方法不在UIAlertView
类下。
【讨论】:
【参考方案4】:错误消息“unrecognized selector sent to instance XXX
”表示应用正在尝试调用不存在的方法。这通常是因为在错误的对象上调用了该方法。
【讨论】:
以上是关于多行 UIAlertView 消息崩溃的主要内容,如果未能解决你的问题,请参考以下文章
UIAlertView 和 UIAlertController
iOS5:有人设法用三个按钮和文本字段(UIAlertViewStylePlainTextInput)修复 UIAlertView 吗?