【问题标题】:MFMessageComposeViewController alloc returns nilMFMessageComposeViewController alloc 返回 nil
【发布时间】:2010-08-17 00:46:45
【问题描述】:

在我的应用程序中,MFMailComposeViewController 工作正常,但创建 MFMessageComposeViewController 的新实例失败。

这是两者的代码:

-( IBAction)sendSMS: (id)sender
{
 MFMessageComposeViewController *picker = [[[MFMessageComposeViewController alloc] init] autorelease];
 picker.messageComposeDelegate = self;

 NSArray *toRecipients = [NSArray arrayWithObject: cell.currentTitle ]; 

 picker.recipients = toRecipients;

 [self presentModalViewController:picker animated:YES];
}

-( IBAction)sendEmail: (id)sender
{
 MFMailComposeViewController *picker = [[[MFMailComposeViewController alloc] init] autorelease];
 picker.mailComposeDelegate = self;

 NSArray *toRecipients = [NSArray arrayWithObject: email.currentTitle ]; 

 [picker setToRecipients:toRecipients];

 [self presentModalViewController:picker animated:YES];
}

看起来一切都正确链接,因为电子邮件视图控制器工作正常。有什么我遗漏的东西可能是配置方面的吗?

【问题讨论】:

  • 当提问者评论接受的答案时,MFMailComposeViewController 结果为nil 是因为他使用了模拟器。

标签: iphone objective-c ios4 mfmailcomposeviewcontroller


【解决方案1】:

你检查过+[MFMessageComposeViewController canSendText]吗?

来自MFMessageComposeViewController Class Reference

在呈现消息组合视图之前,调用canSendText 类方法以确保用户的设备已正确配置。如果 canSendText 方法返回 NO,则不要尝试显示消息组合视图。如果 SMS 传送不可用,您可以通知用户或直接在您的应用程序中禁用 SMS 功能。

从 iOS 5 开始,您可以注册以通过MFMessageComposeViewControllerTextMessageAvailabilityDidChangeNotification 通知的方式接收短信发送可用性更改的通知。

可能返回nil的原因:

  • 设备未运行 iOS 4。
  • 设备是未启用 iMessage 的 iPod Touch/iPad。
  • 没有 SIM 卡? (该视图现在显示在 iOS 6 中;应用程序不会收到消息发送失败的通知。)
  • “设备”实际上是模拟器。 (也许这也适用于 iOS 6。)

同样,[[MFMailComposeViewController alloc] init] 在未启用任何邮件帐户时返回 nil(您可以通过在“设置”中禁用帐户来快速测试这一点),但还会为您显示“未配置邮件帐户”警报。 MFMessageComposeViewController 不这样做。

【讨论】:

  • 太好了,谢谢。我可能应该更清楚,问题是使用模拟器出现的,它显然没有 SMS 功能。
  • 如果没有SIM卡,应用退出。为什么?它只是给出一个弹出消息“没有 sim 卡存在”。它事件将 SMS 发送结果发送到委托方法。然后退出。有什么办法阻止它退出?
  • 您是否检查过控制台的消息?它会崩溃还是“正常”退出?有崩溃日志吗?附加调试器有帮助吗?
  • "Device" is actually the simulator. 是的,请不要强调指出这一点。
猜你喜欢
  • 2021-12-21
  • 1970-01-01
  • 2021-05-05
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
相关资源
最近更新 更多