我试图从我的应用程序内发送短信。我写了这段代码,但它似乎不工作。没有崩溃,没有错误日志,只是什么都没有发生(当然我试图记录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];
}
}
谁能告诉我我做错了什么? 问题是presentModalViewController
在viewDidLoad
中不工作,因为视图已加载,但可能还没有出现在屏幕上。如果你把你的代码放在viewWillAppear:animated
,这应该工作。
编辑:根据Saphrosit的评论:viewDidAppear:
是一个更好的地方做这件事
我成功使用了:
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
controller.messageComposeDelegate = self;
controller.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentModalViewController:controller animated:YES];
注意它是messageComposeDelegate,而不是像你那样的'delegate'。
蒂姆当我在模拟器上尝试代码时,我得到一个UIAlert说短信不可用,因为模拟器不能发送消息。你是否检查过你的头文件是MFMessageComposeViewControllerDelegate的委托?
YourClassName : UIViewController <MFMessageComposeViewControllerDelegate>
//试试这个…它会运行…
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]; }