以下情况:我想发送应用短信。这是我创建MFMessageComposeViewController的代码:
-(void) showMessageComposerWithText:(NSString*)messageText telNumber:(NSString*)telNumber composeDelegate:(id)delegate
{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
if([MFMessageComposeViewController canSendText])
{
controller.body = messageText;
controller.recipients = [NSArray arrayWithObject:telNumber];
controller.messageComposeDelegate = delegate;
[delegate presentModalViewController:controller animated:YES];
}
}
所以我认为这是直截了当的。在Simulator中测试时,我得到以下异常:Application tried to push a nil view controller on target <MFMessageComposeViewController: 0x8a4e090>
。我也想知道为什么[MFMessageComposeViewController canSendText]
在模拟器中运行应用程序时返回YES
。
在设备上运行时,一切正常。
我在文档/网页上找不到有关这种奇怪行为的任何内容。
我在OS 10.7.3上运行Xcode 4.3,部署目标是iOS 5.0。
提前致谢, tubtub
答案 0 :(得分:23)
在OS X Lion上安装Messages beta时会出现此问题。
编辑:当配置并启用了iMessage帐户时,它也会出现在Mountain Lion上。如果帐户被禁用,它可以正常工作(canSendText返回NO)。
提示:如果您使用controller.modalTransitionStyle = UIModalTransitionStylePartialCurl
,可以点击左上角的卷曲“页面”返回模拟器。
答案 1 :(得分:4)
模拟器应始终从canSendText返回NO,而iOS 5.0和5.1模拟器则不然。使用Xcode 4.2,它在Xcode 4.3上崩溃了,它只是推动了一个nil视图控制器。
答案 2 :(得分:2)
我看到了同样的事情。我认为这是使用Xcode 4.3的iOS 5模拟器中的一个错误。 canSendText
在iOS 4.3模拟器中正确返回NO
。相同的代码在设备上运行良好。
答案 3 :(得分:1)
使用此配置,canSendText在模拟器中正确返回NO(此外,UIAlertView似乎表示文本消息不可用):