发送短信iPhone

时间:2011-11-29 13:13:49

标签: iphone cocoa-touch sms mfmailcomposeviewcontroller

我正在尝试从我的应用内发送短信。我写了这段代码,但似乎没有用。 没有崩溃,没有错误日志,根本没有发生任何事情(当然我试图记录canSendText,结果是1)。

- (void)viewDidLoad
{
    [super viewDidLoad];

    messageComposer = [[MFMessageComposeViewController alloc] init];

    if ([MFMessageComposeViewController canSendText]) {

        [messageComposer setBody:@"Messaggio generato da SMSTest"];
        [messageComposer setRecipients:[NSArray arrayWithObject:@"3333333333"]];
        [messageComposer setDelegate:self];

        [self presentModalViewController:messageComposer animated:YES];
    }
}

任何人都能解释一下我做错了什么吗?

4 个答案:

答案 0 :(得分:5)

问题是presentModalViewControllerviewDidLoad中无法正常工作,因为视图已加载但可能尚未显示在屏幕上。如果您将代码放在viewWillAppear:animated中,则应该可以使用。

编辑:根据Saphrosit的评论:viewDidAppear:是一个更好的地方。

答案 1 :(得分:0)

我成功使用了这个:

MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
controller.messageComposeDelegate = self;
controller.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentModalViewController:controller animated:YES];

请注意,它是messageComposeDelegate,而不是“委托”。

答案 2 :(得分:0)

当我在模拟器上尝试代码时,我得到一个UIAlert说文本消息不可用,因为模拟器不能发送消息。您是否检查过您的头文件是MFMessageComposeViewControllerDelegate的委托?

YourClassName : UIViewController  <MFMessageComposeViewControllerDelegate>

答案 3 :(得分:0)

//尝试这个......它会运行..

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