源代码在这:
加载MFMessageComposeViewController
- (void)showMessageView
{
if( [MFMessageComposeViewController canSendText] )
{
MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc] init];//autorelease];
controller.recipients = [NSArray arrayWithObject:@"15988888888"];
controller.body = @"请直接将此条认证短信发送给我们,以完成手机安全绑定。(9qzkd27953ma)";
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:YES];
// [[[[controller viewControllers] lastObject] navigationItem] setTitle:@"SomethingElse"];//修改短信界面标题
[controller release];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示信息"
message:@"该设备不支持短信功能"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"确定", nil];
[alert show];
[alert release];
}
}
MFMessageComposeViewControllerDelegate
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[controller dismissModalViewControllerAnimated:NO];//关键的一句 不能为YES
switch ( result ) {
case MessageComposeResultCancelled:
{
//click cancel button
}
break;
case MessageComposeResultFailed:// send failed
break;
case MessageComposeResultSent:
{
//do something
}
break;
default:
break;
}
}
我们知道可以使用这样的代码在iphone中发送短信:
[[UIApplication sharedApplication] openURL:@"sms:12345678"];
但这样的方式无法指定短信内容。那么我们可以使用MessageUI框架。
首先在程序中导入MessageUI.framework。import头文件:#import "DeviceDetection.h"
然后在代码中使用下面的语句来调用短信发送窗口,并指定号码和短信内容:
MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init]autorelease];
controller.body = @"zc";
controller.recipients = [NSArray arrayWithObjects:@"106295598", nil];
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:YES];
同时实现协议MFMessageComposeViewControllerDelegate,
在协议方法messageComposeViewController:didFinishWithResult:
中解散窗口:
switch (result) {
case MessageComposeResultCancelled:
NSLog(@"Cancelled");
break;
case MessageComposeResultFailed:
[self alert:@"发送短信错误!"];
break;
case MessageComposeResultSent:
break;
default:
break;
}
[self dismissModalViewControllerAnimated:YES];