在我的应用程序中,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];
}
由于电子邮件视图控制器工作正常,所以一切都正确链接似乎很明显。是否有一些我缺少的东西可能是配置明智的?
答案 0 :(得分:46)
您检查过+[MFMessageComposeViewController canSendText]
吗?
来自MFMessageComposeViewController Class Reference,
在呈现消息组合视图之前,请调用
canSendText
类方法以确保正确配置用户的设备。如果canSendText方法返回NO,请不要尝试显示消息组合视图。如果没有短信发送,您可以通知用户或只是禁用应用程序中的短信功能。从iOS 5开始,您可以注册以通过
MFMessageComposeViewControllerTextMessageAvailabilityDidChangeNotification
通知收到有关短信发送可用性变化的通知。
可能返回的原因nil
:
同样,[[MFMailComposeViewController alloc] init]
在没有启用邮件帐户时返回nil
(您可以通过在“设置”中禁用帐户来快速测试),但也会显示“未配置邮件帐户”提醒。 MFMessageComposeViewController不会这样做。