【问题标题】:Send SMS iPhone发送短信 iPhone
【发布时间】:2011-11-29 13:13:49
【问题描述】:

我试图从我的应用程序中发送短信。我写了这段代码,但它似乎不起作用。 没有崩溃,没有错误日志,什么都没有发生(当然我尝试记录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];
    }
}

谁能解释我做错了什么?

【问题讨论】:

  • 你在模拟器上测试过吗?模拟器无法发送短信。
  • 您尝试在手机上而不是模拟器上运行应用程序时执行此操作,对吗?您将无法从 sim 发送短信。我认为它也不会引发任何错误......虽然我不能确定。
  • 是的,我在 iPhone 上试过。正如我所说,canSendText 返回 1。在模拟器中它会返回 0。

标签: iphone cocoa-touch sms mfmailcomposeviewcontroller


【解决方案1】:

问题是 presentModalViewControllerviewDidLoad 中不起作用,因为视图已加载但可能还没有出现在屏幕上。如果你把你的代码放在viewWillAppear:animated,这应该可以工作。

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

【讨论】:

  • 很好,但即使在viewWillAppear 中,视图可能还没有出现在屏幕上。将代码放在viewDidAppear 中是有效的,即使最好的解决方案是使用按钮来执行自定义方法。
【解决方案2】:

我用这个成功了:

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

请注意,它是 messageComposeDelegate,而不是您所做的“委托”。

提姆

【讨论】:

    【解决方案3】:

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

    YourClassName : UIViewController  <MFMessageComposeViewControllerDelegate>
    

    【讨论】:

      【解决方案4】:

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

      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];
            }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多