iOS-----MFMessageCompose 和 MFMailComposeViewController的使用方法
MFMessageCompose 和 MFMailComposeViewController的使用方法
使用MFMessageComposeViewCOntroller发短信
应用想自己提供界面让用户输入短信收件人地址、短信内容、主体、附件等短信内容,则可使用MFMessageComposeViewController来发送短信,它也是一个视图控制器,继承UINavigationController.
MFMessageComposeViewController提供了如下类方法判断iOS设备是否支持发送短信.
+ canSendText: |
该iOS设备是否支持发送文本短信. |
|
+ canSendAttachments: |
该iOS设备是否支持发送带附件的短信 |
|
+ canSendSubject: |
该iOS设备是否支持发送带标题的短信 |
|
程序使用MFMessageComposeViewController的类方法进行判断之后,接下来就可按如下步骤发送短信. |
||
1 |
创建MFMessageComposeViewController对象 |
|
2 |
为MFMessageComposeViewController设置recipients(接受NSArray作为属性值,用于设置多个收件人号码)、subject(设置短信主题)、body(设置短信内容)、attachments(接受NSArray作为属性值,用于设置多个附件)等属性 |
|
3 |
为MFMessageComposeViewController设置messageComposeDelegate,该属性值必须是一个实现MFMessageComposeViewControllerDelegate协议的对象.该协议中定义了一个必须实现的messageComposeViewComtroller:didFinishWithResult:方法,该方法负责处理短信的发送结果. |
|
代 码 片 段 |
@interface LCViewController()<MFMessageComposeViewControllerDelegate> @end @implementation LCViewController - (void)viewDidLoad { [super viewDidLoad]; } - (IBAction)send:(id)sender { NSString* destStr = self.destField.text; NSString* contentStr = self.contentField.text; if(destStr != nil && destStr.length> && contentStr != nil && destStr.length > ) { // 如果能发送文本信息 if([MFMessageComposeViewController canSendText]) { // 创建MFMessageComposeViewController对象 MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init]; // 为MFMessageComposeViewController对象指定messageComposeDelegate picker.messageComposeDelegate = self; picker.navigationBar.tintColor = [UIColor blackColor]; // 设置收件人,此处可通过NSArray集合指定多个收件人 picker.recipients = [NSArray arrayWithObject:destStr]; // 设置短信内容 picker.body = contenStr; /* 如果运营商支持,picker还支持指定subjecy(主题)和attachments(附件) 也可用addAttachmentURL:withAlternateFilename:或addAttachmentData:typeIdentifier:filename:方法添加附件 */ // 显示MFMessageComposeViewController控制器 [self persentViewController:picker animated:YES completion:nil]; } } } // MFMessageComposeViewControllerDelegate协议中的方法,负责处理短信的发送结果 - (void)messageComposeViewController:(MFMessageComposeViewController*)controller didFinishWithResult:(MessageComposeResult)result { switch(result) { case MessageComposeResultCancelled: [self showAlert:@”结果: 短信被取消发送”]; break; case MessageComposeResultSent: [self showAlert:@”结果: 发送成功”]; break; case MessageComposeResultFailed: [self showAlert:@”结果: 发送失败”]; break; default: [self showAlert:@”结果: 没有发送短信”]; break; } [self dismissViewControllerAnimated:YES completion:nil]; } - (void)showAlert:(NSString *)msg { [[[UIAlertView alloc] initWithTitle:@”发送结果” message:msg delegate:nil cancelButtonTitle:@”确 定” otherButtonTitles:nil] show]; } @end 创建了一个MFMessageComposeViewController对象,并为该对象设置了recipents(收件人)、body(短信内容),并将该视图控制器本身设为它的messageComposeDelegate,因此该视图控制器类实现了MFMessageComposeViewControllerDelegate协议,并实现该协议中的方法----该方法负责处理发送短信的结果。 |
|
使用MFMailComposeViewController发送邮件
MFMailComposeViewController与MFMessageComposeViewController的用法非常相似,只是功能不同而已------MFMailComposeViewController用于发送邮件。
MFMailComposeViewController提供了如下类方法判断iOS设备是否支持发送邮件。
+ canSendMail: 该iOS设备是否支持发送邮件.
程序使用MFMailComposeViewController的类方法进行判断之后,接下来就可按如下步骤发送邮件.
- 创建MFMailComposeViewController对象
- 为MFMailComposeViewController设置toRecipients: (接受NSArray作为属性值,用于设置多个收件人地址)、ccRecipients:(接受NSArray作为属性值,用于设置多个抄送人地址)、bccRecipients:(接收NSArray作为属性值,用于设置多个密送人地址)、subject(设置邮件主题),还可通过setMessageBody:isHTML:方法设置邮件正文,通过addAttachmentData:mimeType:filename:方法添加附件.
- 为MFMailComposeViewController设置mailComposeDelegate,该属性值必须是一个实现MFMailComposeViewControllerDelegate协议的对象.该协议中定义了一个必须实现的mailComposeController:didFinishWithResult:error:方法,该方法负责处理邮件的发送结果.
代 码 片 段 |
@interface LCViewController()<MFMailComposeViewControllerDelegate> @end @implementation LCViewController -(void)viewDidLoad { [super viewDidLoad]; } -(IBAction)sendMail:(id)sender { // 获取界面上用户输入的内容 NSString* toStr = self.toField.text;// 收件人地址 NSString* ccStr = self.ccField.text;// 抄送人地址 NSString* bccStr = self.bccField.text;// 密送人地址 NSString* subjectStr = self.subjectField.text;// 邮件主题 NSString* contentStr = self.contentField.text;// 邮件正文 if(toStr != nil && toStr.length > && subjectStr != nil && subjectStr.length > && contentStr != nil && contentStr.length > ) { // 如果能发送邮件 if([MFMailComposeViewController canSendMail]) { // 创建MFMailComposeViewController对象 MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; // 为 MFMailComposeViewController对象指定mailComposeDelegate picker.mailComposeDelegate = self; picker.navigationBar.tintColor = [UIColor blackColor]; // 设置收件人,此处可通过NSArray集合指定多个收件人 picker.toRecipients = [NSArray arrayWithObject:toStr]; if(ccStr != nil && ccStr.length > ) { // 设置抄送人,此处可通过NSArray集合指定多个抄送人 picker.ccRecipients = [NSArray arrayWithObject:ccStr]; } if(bccStr != nil && bccStr.length > ) { // 设置密送人,此处可用过NSArray集合指定多个密送人 picker.bccRecipients = [NSArray arrayWithObject:bccStr]; } // 设置邮件主题 picker.subject = subjectStr; // 设置邮件正文 [picker setMessageBody:contentStr isHTML:NO]; // 显示MFMailComposeViewController控制器 [self persentViewController:picker animated:YES completion:nil]; } } } -(IBAction)finishEdit:(id)sender { [sender resignFirstResponder]; } -(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { switch(result) { case MFMailComposeResultCancelled: [self showAlert:@”结果: 邮件被取消发送”]; break; case MFMailComposeResultSent: [self showAlert:@”结果: 发送成功”]; break; case MFMailComposeResultFailed: [self showAlert:@”结果: 发送失败”]; break; case MFMailComposeResultSaved: [self showAlert:@”结果: 邮件被保存了”]; break; } [self dismissViewControllerAnimated:YES completion:nil]; } -(void)showAlert:(NSString *)msg { [ [ [ UIAlertView alloc] initWithTitle:@”发送结果” message:msg delegate:nil cancelButtonTitle:@”确定” otherButtonTitles:nil] show]; } @end // 上面程序中的粗体字代码创建了一个MFMailComposeViewController对象,并为该对象设置了toRecipients(收件人地址)、ccRecipients(抄送人地址)、bccRecipients(密送人地址),还调用了setMessageBody:contentStr isHTML:方法设置邮件正文,并将该视图控制器本身设为它的mailComposeDelegate,因此该视图控制器类实现MFMailComposeViewControllerDelegate协议,并实现了该协议中的方法----该方法负责处理发送邮件的结果。 // 编译、运行该程序(必须在真机中运行,模拟器不支持),在程序界面中输入收件人地址、抄送地址、密送人地址、邮件主题、邮件正文,然后单击“发送”按钮,将可以看到如下图所示的界面 |
iOS-----MFMessageCompose 和 MFMailComposeViewController的使用方法的更多相关文章
- IOS发送Email的两种方法
IOS系统框架提供的两种发送Email的方法:openURL 和 MFMailComposeViewController.借助这两个方法,我们可以轻松的在应用里加入如用户反馈这类需要发送邮件的功能. ...
- iOS开发 GET、POST请求方法(NSURLSession篇)
NSURLConnection,在iOS9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: [iOS开发 GET.POST请求方法(NSURLConnectio ...
- iOS开发 GET、POST请求方法(NSURLConnection篇)
Web Service使用的主要协议是HTTP协议,即超文本传输协议. HTTP/1.1协议共定义了8种请求方法(OPTIONS.HEAD.GET.POST.PUT.DELETE.TRACE.CONN ...
- IOS中图片拉伸技巧与方法总结(转载)
以下内容转载自:http://my.oschina.net/u/2340880/blog/403996 IOS中图片拉伸技巧与方法总结 一.了解几个图像拉伸的函数和方法 1.直接拉伸法 简单暴力,却是 ...
- iOS——浅谈iOS中三种生成随机数方法
ios 有如下三种随机数方法:
- iOS项目的完整重命名方法图文教程
原文链接:http://www.cocoachina.com/ios/20150104/10824.html iOS项目的完整重命名方法图文教程 前言:在iOS开发中,有时候想改一下项目的名字,都会遇 ...
- iOS开发中的Html解析方法
iOS开发中的Html解析方法 本文作者为大家介绍了在iOS开发中的Html解析方法,并同时提供了Demo代码的下载链接,Demo 解析了某个网站(具体可在代码中查看)的html网页,提取了图片以及标 ...
- IOS发送Email的两种方法-备
1.openURL 使用openURL调用系统邮箱客户端是我们在IOS3.0以下实现发邮件功能的主要手段.我们可以通过设置url里的相关参数来指定邮件的内容,不过其缺点很明显,这样的过程会导致程序暂时 ...
- iOS开发 GET、POST请求方法:NSURLSession篇
NSURLConnection,在iOS 9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: iOS开发 GET.POST请求方法(NSURLConnectio ...
随机推荐
- cordic算法的verilog实现及modelsim仿真
1. 算法介绍 CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数.双曲 ...
- Selenium之Chrome浏览器的启动问题及解决
System.setProperty("webdriver.chrome.driver","chromedriver.exe路径"); 配置好Chrome的驱动 ...
- Web前台学习总结
前台的技术有很多种,流行的框架也是枚不胜举,在这里我们只讨论html,css,js这些基本的技术,相信大家如果掌握了这些最基本的技术,其他的技术也就会使用了. 下面是一个案例的形式来讲解上述的技术. ...
- flask使用ajax提交表单
Flask中使用ajax提交表单刷新数据,避免提交表单后使用return render_temp()会刷新页面 <form id ="test_form"> {{ fo ...
- 学习java的一点体会
在这几天的做实验.读书.写笔记的过程中我发现一个问题,就是我的知识面太窄,就比如说,学的知识都是一块一块的,没有能力去把它串起来,虽然学的很快,也写笔记总结,但马上就忘了,我想java是一个体系,需要 ...
- HeyWeGo第三周项目总结
HeyWeGo第三周项目总结 项目进展 第三周的计划是:将收集到的资料和代码,进行汇总并且分工后开始开始撰写游戏代码与测试代码. 本周我们已经开始编写了自己负责部分的代码. 按照我们的计划,本周我们完 ...
- Xilinx SD controller
Features supported by driver Zynq All the HW/IP features are supported by driver ZynqMP All the HW/I ...
- Tomcat 发布项目 conf/Catalina/localhost 配置 及数据源配置
本文介绍通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目.因为这样对 tomcat 的入侵性最小,只需要新增一个配置文件,不需要修改原有配置:而且支持动 ...
- Python3基础 raise + 指定类型异常+异常的解释 产生特定类型异常
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Markdown中的表格
参考:在简书上用Markdown写表格 | Tables | Are | Cool | | ------------- |:-------------:| -----:| | col 3 is | r ...