模拟器上的MFMessageComposeViewController - canSendText?

时间:2012-02-19 13:03:55

标签: ios5 ios-simulator sendmessage

以下情况:我想发送应用短信。这是我创建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

4 个答案:

答案 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似乎表示文本消息不可用):

  • Mountain Lion
  • Xcode 4.4,
  • iOS 5.1