标签:
①发短信
1.创建Button ,添加button的响应事件
UIButton *callButton = [UIButton buttonWithType:UIButtonTypeCustom];
callButton.frame = CGRectMake(80, 150, 80, 80);
callButton.backgroundColor = [UIColor cyanColor];
[callButton setTitle:@"短信" forState:UIControlStateNormal];
[callButton addTarget:self action:@selector(callButtonAction:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:callButton];2.发短信操作,设置代理MFMessageComposeViewControllerDelegate
- (void)callButtonAction:(UIButton *)msg2
{
// 判断用户设备能否发送短信
if (![MFMessageComposeViewController canSendText]) {
return;
}
// 1. 实例化一个控制器
MFMessageComposeViewController *controller =
[[MFMessageComposeViewController alloc] init];
// 2. 设置短信内容
// 1) 收件人
controller.recipients = @[@"10010", @"10086"];
// 2) 短信内容
controller.body = @"快乐!";
// 3) 设置代理
controller.messageComposeDelegate = self;
// 3. 显示短信控制器
[self presentViewController:controller animated:YES completion:nil];
}3.实现代理方法
/**
短信发送结果
MessageComposeResultCancelled, 取消
MessageComposeResultSent, 发送
MessageComposeResultFailed 失败
*/
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
didFinishWithResult:(MessageComposeResult)result
{
NSLog(@"%d", result);
// 在面向对象程序开发中,有一个原则,谁申请,谁释放!
// *** 此方法也可以正常工作,因为系统会将关闭消息发送给self
// [controller dismissViewControllerAnimated:YES completion:nil];
// 应该用这个!
[self dismissViewControllerAnimated:YES completion:nil];
}②发邮件
1.创建button(如上),设置button触发事件,emailButtonAction:实现方法
<span style="color:#000000;">- (void)emailButtonAction:(UIButton *)sendmail {
// 1. 先判断能否发送邮件
if (![MFMailComposeViewController canSendMail]) {
// 提示用户设置邮箱
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil
message:@"用户没有设置邮件账户" delegate:self cancelButtonTitle:nil
otherButtonTitles:@"确定", nil];
[alert show];
[alert release];
return;
}
// 2. 实例化邮件控制器,准备发送邮件
MFMailComposeViewController *controller =[[MFMailComposeViewController alloc] init];
// 1) 主题 xxx的工作报告
[controller setSubject:@"项目答辩"];
// 2) 收件人
[controller setToRecipients:@[@"123456@gmail.com"]];
// 5) 正文
[controller setMessageBody:@"是大法官" isHTML:YES];
// 6) 附件
UIImage *image = [UIImage imageNamed:@"头像1.png"];
NSData *imageData = UIImagePNGRepresentation(image);
// 1> 附件的二进制数据
// 3> 收件人接收时看到的文件名称
// 可以添加多个附件
[controller addAttachmentData:imageData
mimeType:@"image/png" fileName:@"头像.png"];
// 7) 设置代理
[controller setMailComposeDelegate:self];
// 显示控制器
[self presentViewController:controller animated:YES completion:nil];
}</span>
2.实现代理方法( MFMailComposeViewControllerDelegate)
- (void)mailComposeController:(MFMailComposeViewController *)controller
didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
// 根据不同状态提示用户
NSLog(@"%d", result);
[self dismissViewControllerAnimated:YES completion:nil];
}
③打电话
1.方法1
- (void)tel2
{
// 但是:telprompt协议属于苹果的私有协议,一旦程序中使用了此协议,程序无法上架
// 针对越狱的机器开发的系统,可以使用此协议
NSURL *url = [NSURL URLWithString:@"telprompt://10010"];
[[UIApplication sharedApplication] openURL:url];
}2.方法2 (推荐)@property (nonatomic, retain) UIWebView *webView;实现响应事件
- (void)phoneButtonAction:(UIButton *)tel3
{
// 提示:不要将webView添加到self.view,如果添加会遮挡原有的视图
// 懒加载
if (_webView == nil) {
_webView = [[UIWebView alloc] init];
}
NSLog(@"%p", _webView);
// _webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
// [self.view addSubview:_webView];
NSURL *url = [NSURL URLWithString:@"tel://10010"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//UIWebView *view = [[UIWebView ]
[_webView loadRequest:request];
}3. 这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示.
NSMutableString * str=[[NSMutableString alloc] initWithFormat:@"tel:%@",
@"186xxxx6979"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
标签:
原文地址:http://blog.csdn.net/zfx5130/article/details/43275307