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 ...
随机推荐
- 运行HBase应用开发程序产生异常,提示信息包含org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory的解决办法
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties Exception in thread ...
- PAT 1053 Path of Equal Weight[比较]
1053 Path of Equal Weight(30 分) Given a non-empty tree with root R, and with weight Wi assigned t ...
- JQuery UI中的Tabs与base元素摩擦的BUG
JQuery UI中的Tabs与base元素冲突的BUG 以前一直使用jquery-ui-1.8,最近打算试一下目前最新的版本1.11.但对于Tabs,页面是乱的,怎么也不正常.折腾了好几个小时,最后 ...
- CCPC-Wannafly Winter Camp Day4 (Div2, onsite)
Replay Dup4: 两轮怎么退火啊? 简单树形dp都不会了,送了那么多罚时 简单题都不想清楚就乱写了,喵喵喵? X: 欧拉怎么回路啊, 不会啊. 还是有没有手误?未思考清楚或者未检查就提交, 导 ...
- hdu5110 dp
题意 给 了 一 个 矩 阵 然 后 , 潜 艇 可 以 向 前 在 西北和东北之间 的区域, 然后每个潜艇有一个值D ,当到达潜艇距离为D的倍数的时候可以得到这个价值,这样我们1000*1000 的 ...
- 前端学习笔记之css清除浮动float的七种常用方法总结和兼容性处理
在清除浮动前我们要了解两个重要的定义: 浮动的定义:使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来. 高度塌陷:浮动元素父元素高度自适应(父元素不写高度时,子元素写了浮 ...
- 2018-2019-1 20189215 《Linux内核原理与分析》第四周作业
<庖丁解牛>第三章书本知识总结 计算机的三大法宝 存储程序计算机 函数调用堆栈 中断 操作系统的两把宝剑 中断上下文的切换--保存现场和恢复现场 进程上下文的切换 Linux内核源码的目录 ...
- 20145221 《Java程序设计》第一周学习总结
20145221 <Java程序设计>第一周学习总结 教材学习内容总结 第一周内容已在假期完成,详见博客: Hello Java! 开源中国的代码托管 代码调试中的问题和解决过程 第一周内 ...
- 20145325张梓靖 《Java程序设计》第10周学习总结
20145325张梓靖 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 计算机网络 路由器和交换机组成 ...
- SDN原理 OpenFlow协议 -3
问题4:流表匹配 OF1.1版本 这是OF1.1版本的操作,引入了多流表,1.0版本并没有多流表. 多流表的匹配称为 流水线处理:交换机从流表0开始查找,按照流表序号从小到大匹配. 每个包按照优先级去 ...

