模拟器上的 MFMessageComposeViewController - canSendText?

Posted

技术标签:

【中文标题】模拟器上的 MFMessageComposeViewController - canSendText?【英文标题】:MFMessageComposeViewController on Simulator - canSendText? 【发布时间】:2012-03-10 02:24:11 【问题描述】:

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

所以我认为这是直截了当的。在模拟器中测试时出现以下异常: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。

提前致谢, 浴缸

【问题讨论】:

【参考方案1】:

当您在 OS X Lion 上安装 Messages beta 时会出现此问题。

编辑:当配置并启用 iMessage 帐户时,它也会在 Mountain Lion 上发生。如果帐户被禁用,它可以正常工作(canSendText 返回 NO)。

提示:如果您使用controller.modalTransitionStyle = UIModalTransitionStylePartialCurl,您可以点击左上角卷曲的“页面”返回模拟器。

【讨论】:

如果安装了 Messages 测试版,canSendText 返回YES,但视图将变为黑色和空白(无内容)。如果已卸载 Messages 测试版,canSendText 将返回 NO。 Lion 上的 Xcode 4.4 GM 和 iPhone 5.1 模拟器。 有什么解决办法吗?此错误在带有 XCode 4.6.1 的 Mac OS 10.8.2 上仍然存在。【参考方案2】:

模拟器应该总是从 canSendText 返回 NO,iOS 5.0 和 5.1 模拟器不是这种情况。在 Xcode 4.2 上它崩溃了,在 Xcode 4.3 上它只是推送一个 nil 视图控制器。

【讨论】:

我有同样的问题,正在推送一个 nil 视图,但它甚至发生在我的运行 iOS 5.1 的 iPhone 4 测试设备上【参考方案3】:

我看到了同样的事情。我认为这是带有 Xcode 4.3 的 iOS 5 模拟器中的一个错误。 canSendText 在 iOS 4.3 模拟器中正确返回 NO。相同的代码在设备上运行良好。

【讨论】:

【参考方案4】:

使用此配置,canSendText 在模拟器中正确返回 NO(另外,UIAlertView 似乎显示文本消息不可用):

山狮 Xcode 4.4, iOS 5.1

【讨论】:

我猜你没有配置和启用 iMessage 帐户。

以上是关于模拟器上的 MFMessageComposeViewController - canSendText?的主要内容,如果未能解决你的问题,请参考以下文章

有时无法访问配对手表模拟器上的 WatchConnectivity 会话

模拟器上的 MFMessageComposeViewController - canSendText?

安卓模拟器上的 Instagram

iPhone 6 设备和模拟器上的快照方法损坏

android 模拟器在 mobilefirst 上的 shouldStartProvisioning 错误

2 模拟器上的 iAd