2012-02-19 66 views
15

以下情况:我想发送应用程序短信。这是我的代码创建MFMessageComposeViewController:模拟器上的MFMessageComposeViewController - canSendText?

-(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]; 
    } 
} 

所以我觉得这是直线前进。当在模拟器中测试时,我得到以下例外:Application tried to push a nil view controller on target <MFMessageComposeViewController: 0x8a4e090>。我也在想自己为什么[MFMessageComposeViewController canSendText]在模拟器中运行应用程序时返回YES

在设备上运行时,一切工作正常。

我找不到关于这个奇怪行为的文档/网络中的任何内容。

我在OS 10.7.3上运行Xcode 4.3,Deployment Target是iOS 5.0。

由于提前, tubtub

回答

23

在OS X Lion上安装消息测试版时会出现此问题。

编辑:当配置并启用iMessage帐户时,它也出现在Mountain Lion上。如果帐户被禁用,它将正常工作(canSendText返回NO)。提示:如果您使用controller.modalTransitionStyle = UIModalTransitionStylePartialCurl,则可以通过单击左上角卷曲的“页面”返回模拟器。

+2

如果安装了消息beta,'canSendText'返回YES,但视图将变成黑色和空(无内容)。如果信息测试版已卸载,'canSendText'返回'NO'。 Lion上的Xcode 4.4 GM和iPhone 5.1模拟器。 – Chris 2012-07-15 09:29:32

+0

有没有解决这个问题呢?此错误在Mac OS 10.8.2和XCode 4.6.1中仍然存在。 – 2013-05-16 14:40:19

2

我看到同样的事情。我认为这是使用Xcode 4.3的iOS 5模拟器中的一个错误。 canSendText在iOS 4.3模拟器中正确返回NO。相同的代码在设备上正常工作。

4

模拟器应该总是从canSendText中返回NO,但对于iOS 5.0和5.1模拟器,情况并非如此。随着Xcode 4.2的崩溃,在Xcode 4.3上它只是推一个零视图控制器。

+0

我有相同的问题,即无视图被推动,但它甚至发生在我的测试设备上运行iOS 5.1的iPhone 4 – OscarTheGrouch 2012-04-13 10:57:46

1

根据该结构,canSendText正确NO返回在模拟器(加,一个UIAlertView中似乎说短信不可用):

  • 山狮子
  • 的Xcode 4.4,
  • 的iOS 5.1
+0

我想你没有配置和启用iMessage帐户。 – 2012-09-04 07:00:24

0

获取相同的错误。 使用XCode 5.0(5A1413)在OSX 10.8.5上进行。

尝试更改为不同的模拟器类型(iPhone,iPad),但结果相同。还尝试禁用消息中的帐户,但无济于事。