我正在尝试从我的应用内发送短信。我写了这段代码,但似乎没有用。
没有崩溃,没有错误日志,根本没有发生任何事情(当然我试图记录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];
}
}
任何人都能解释一下我做错了什么吗?
答案 0 :(得分:5)
问题是presentModalViewController
在viewDidLoad
中无法正常工作,因为视图已加载但可能尚未显示在屏幕上。如果您将代码放在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]; }