canSendText返回false

时间:2012-11-06 08:09:04

标签: iphone objective-c ios

我正在尝试通过我当前的应用发送短信。

 if ([NSClassFromString(@"MFMessageComposeViewController") canSendText])

我已尝试过以上一行,但它返回false?我相信我可以通过我的手机发送短信(使用真实设备进行测试),那么我有什么设置吗?

试过这个:

   Class smsClass = (NSClassFromString(@"MFMessageComposeViewController"));
   if(smsClass != nil)
   {
      if ([smsClass canSendText])
      {
          [self presentMessageComposeViewController];
      }
   }

smsClass返回nil。

帮助很多。

3 个答案:

答案 0 :(得分:2)

试试这个

MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease];
if([MFMessageComposeViewController canSendText])
{
    controller.body = @"Hello Test massage";
    controller.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321", nil];
    controller.messageComposeDelegate = self;
    [self presentModalViewController:controller animated:YES];
}

答案 1 :(得分:0)

根据Apple documentation,canSendText仅适用于iOS 4及更高版本。

因此,如果您使用iOS 3运行设备,则应用程序行为正常。

为什么使用NSClassFromString,以下应该可以使用(在iOS 4及更高版本上):

[MFMessageComposeViewController canSendText];

答案 2 :(得分:0)

if ([NSClassFromString(@"MFMessageComposeViewController") canSendText])

将始终返回false。因为canSendText仅适用于课程MFMessageComposeViewController。但NSClassFromString(@"MFMessageComposeViewController")将返回一个类(不是MFMessageComposeViewController类)。

可能你可以这样试试。

 Class smsClass = (NSClassFromString(@"MFMessageComposeViewController"));
   if(smsClass != nil)
  {
      if ([(MFMessageComposeViewController *)smsClass canSendText])
      {
          [self presentMessageComposeViewController];
      }
   }

或者你可以简单地使用

[MFMessageComposeViewController canSendText];