1 #import "ViewController.h" 2 #import <MessageUI/MessageUI.h> //導入信息UI庫 3 4 @interface ViewController () <MFMessageComposeViewControllerDelegate,MFMailComposeViewControllerDelegate> 5 6 @end 7 8 @implementation ViewController 9 10 - (void)viewDidLoad { 11 [super viewDidLoad]; 12 // Do any additional setup after loading the view, typically from a nib. 13 } 14 15 - (void)didReceiveMemoryWarning { 16 [super didReceiveMemoryWarning]; 17 // Dispose of any resources that can be recreated. 18 } 19 20 - (IBAction)callPhone:(id)sender { 21 //方式1 :拼接字符串 注意開頭是tel: 這種方式打電話回不到原來應用中,會停留在通信錄裏,並且是直接撥打電話 沒有任何彈窗提示 22 // NSString *str = [NSString stringWithFormat:@"tel:%@",self.phoneTextField.text]; 23 // //首先獲得應用的單例對象 而後調用openURL:這個方法 參數是url對象 24 // [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]; 25 26 27 //方式2,這種方式有彈窗提示,而且能回到原來應用中 推薦這種 28 // NSString *str1 = [[NSString alloc] initWithFormat:@"tel:%@",self.phoneTextField.text]; 29 // //建立UIWebView對象 30 // UIWebView *callWebView = [[UIWebView alloc] init]; 31 // //加載一個請求對象 這個請求對象經過url對象建立 url對象又經過str1字符串得到 32 // [callWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:str1]]]; 33 // //加入到self.view上 34 // [self.view addSubview:callWebView]; 35 36 37 //方式3 38 //這種方式 也能夠有彈窗提示 而且也能回到原來的應用中 也推薦這種 39 NSString *str2 = [NSString stringWithFormat:@"telprompt:%@",self.phoneTextField.text]; 40 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str2]]; 41 42 } 43 44 - (IBAction)callWeb:(id)sender { 45 46 //打開網址 注意:打開的網址注意是http:// 或是https:// 47 NSString *str = [NSString stringWithFormat:@"https://%@",self.webTextField.text]; 48 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]; 49 50 51 } 52 - (IBAction)sendSMS:(id)sender { 53 54 //方式1:這種方式無法回到應用中,可是注意不要寫中文等特殊字符 不然沒法跳到發短信界面 55 //優勢:簡單 缺點:不能指定發送內容,只能指定發送人,並且不能回到應用中 56 // NSString *str = [NSString stringWithFormat:@"sms://%@",self.smsTextField.text]; 57 // NSURL *url = [NSURL URLWithString:str]; 58 // [[UIApplication sharedApplication] openURL:url]; 59 60 61 //方式2 推薦這種 62 /* 63 優勢:1.從應用出來而且能回到應用中 64 2.能夠發送多人 65 3.能夠用代碼自定義消息 66 4.若是手機開通了iMessage功能,會走網絡通道,不走運營商通道 67 */ 68 69 //判斷用戶設備是否能發送短信 70 if (![MFMessageComposeViewController canSendText]) { 71 NSLog(@"不能發送內容"); 72 73 return ; 74 } 75 76 //1.建立一個短信控制器對象 77 MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init]; 78 79 //2.設置短信內容 80 // (1)收件人 81 controller.recipients = @[@"10086",@"10010"]; 82 // (2)短信內容 83 controller.body = @"你好啊 你倆"; 84 // (3)設置短信代理 85 controller.messageComposeDelegate = self; 86 87 //3.顯示短信控制器 88 89 [self presentViewController:controller animated:YES completion:^{ 90 NSLog(@"顯示短信控制器完成代碼塊"); 91 }]; 92 93 94 } 95 96 #pragma mark - 短信控制器代理方法 97 98 - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result { 99 100 /* 101 MessageComposeResultCancelled, 取消 102 MessageComposeResultSent, 發送 103 MessageComposeResultFailed 失敗 104 105 result枚舉 106 */ 107 NSLog(@"%d",result); 108 109 //注:別忘了回到應用中 110 [controller dismissViewControllerAnimated:YES completion:^{ 111 NSLog(@"短信控制器消失完成後代碼塊"); 112 }]; 113 114 } 115 116 - (IBAction)sendEmail:(id)sender { 117 118 //方式1 119 // NSString *str = [NSString stringWithFormat:@"mailto://%@",self.emailTextField.text]; 120 // [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]; 121 122 //方式2 123 //判斷是否能發送郵件 124 if (![MFMailComposeViewController canSendMail]) { 125 NSLog(@"不能發送郵件"); 126 return; 127 } 128 //建立mail控制器對象 129 MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init]; 130 //設置郵件主題 131 [vc setSubject:@"我愛你"]; 132 //設置郵件發送內容 第二個參數支持HTML格式 133 [vc setMessageBody:@"基本的電話、郵件、短信" isHTML:YES]; 134 //設置收件人列表 135 [vc setToRecipients:@[@"*******@qq.com"]]; 136 //設置抄送人列表 137 [vc setCcRecipients:@[@"********@qq.com",@"********@163.com"]]; 138 //設置郵件代理 139 vc.mailComposeDelegate = self; 140 //顯示郵件控制器 141 [self presentViewController:vc animated:YES completion:^{ 142 NSLog(@"跳轉完成後執行代碼塊"); 143 }]; 144 145 146 } 147 148 - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { 149 150 /* 151 result枚舉類型 152 MFMailComposeResultCancelled, 取消 153 MFMailComposeResultSaved, 保存 154 MFMailComposeResultSent, 發送 155 MFMailComposeResultFailed 失敗 156 */ 157 NSLog(@"%d",result); 158 159 [controller dismissViewControllerAnimated:YES completion:^{ 160 NSLog(@"郵箱控制器消失完成後代碼塊"); 161 }]; 162 163 } 164 @end
打電話、發短信、web以及發郵件web
另外補充一下,用下面的我的感受更好一些!上面的UIWebView好像彈框的速度有點慢 本身彈框一下更方便一些網絡
- (void)callAction:(NSString *)phone{app
NSMutableString* str1=[[NSMutableString alloc]initWithString:phone];//存在堆區,可變字符串url
[str1 insertString:@"-"atIndex:3];//把一個字符串插入另外一個字符串中的某一個位置spa
[str1 insertString:@"-"atIndex:8];//把一個字符串插入另外一個字符串中的某一個位置代理
UIAlertController *alert = [UIAlertController alertControllerWithTitle:str1 message:nil preferredStyle:UIAlertControllerStyleAlert];code
// 設置popover指向的itemorm
alert.popoverPresentationController.barButtonItem = self.navigationItem.leftBarButtonItem;對象
// 添加按鈕blog
[alert addAction:[UIAlertAction actionWithTitle:@"呼叫" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
NSLog(@"點擊了呼叫按鈕");
NSString* phoneStr = [NSString stringWithFormat:@"tel://%@",phone];
if ([phoneStr hasPrefix:@"sms:"] || [phoneStr hasPrefix:@"tel:"]) {
UIApplication * app = [UIApplication sharedApplication];
if ([app canOpenURL:[NSURL URLWithString:phoneStr]]) {
[app openURL:[NSURL URLWithString:phoneStr]];
}
}
}]];
[alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
NSLog(@"點擊了取消按鈕");
}]];
[self presentViewController:alert animated:YES completion:nil];
}