与多行UIAlertView消息崩溃

时间:2013-05-08 07:20:57

标签: iphone cocoa-touch uialertview

崩溃日志

-[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字符的巨大多行文字。

4 个答案:

答案 0 :(得分:3)

有趣......这似乎是UIAlertView类中的一个错误。

我刚做了一个快速测试,显示UIAlertView的消息由多行组成 - 而在iPad模拟器(iOS 6.1)上,当显示13行或更多行时,警报视图中断。似乎在12行之后警报视图不再变大,显然会发生一些错误,因为它认为它必须滚动,但是没有可用的滚动视图。

所以,请确保你在UIAlertView中显示超过12行我会说...

<强>更新

我刚做了另一个测试 - 我发现崩溃不是(仅)连接到行数,而是连接到警报视图的tag属性的设置 - 当你没有设置tag,它仍然可以正常工作并显示滚动视图 - 就在您设置标记时,它会崩溃超过12行......很奇怪。

更新2(和最后一次):

似乎如果tag的整数值小于12345(我测试过1,12,123,1234)它也有效 - 只有更高的tag值会导致崩溃。还是很奇怪,因为tag属性是NSInteger,因此至少应该有32位,所以12345应该不会出现溢出问题......

答案 1 :(得分:0)

您的代码中某处使用displayScrollerIndicators

呼叫UIAlertView object

答案 2 :(得分:0)

我认为你做错了。你用UIAlertView的对象调用其他类方法。并且您无法调用此方法,因为此方法不属于UIAlertView类。

答案 3 :(得分:0)

错误消息“unrecognized selector sent to instance XXX”表示该应用正在尝试调用不存在的方法。通常会发生这种情况,因为该方法是在错误的对象上调用的。