首页 > 代码库 > 【学习ios之路:UI系列】实现打电话,发短信,发邮件功能
【学习ios之路:UI系列】实现打电话,发短信,发邮件功能
①发短信
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]];
【学习ios之路:UI系列】实现打电话,发短信,发邮件功能
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。