注意:如果想調用發送短信和郵件的功能,必須要引入一個庫:MessageUI.framework
還需要import一些類:
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
-(void)sendSMSComposerSheet
{
MFMessageComposeViewController *messageCtrl = [[MFMessageComposeViewController alloc] init];
messageCtrl.messageComposeDelegate = self;
messageCtrl.body = @"share ....";
[self presentModalViewController:messageCtrl animated:YES];
}
這段代碼實現的委託就:MFMessageComposeViewControllerDelegate
可是我的代碼中也實現了委託,代碼如下:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
}
但是打開短信界面是沒問題的,關鍵是點擊短信界面的取消按鈕沒有相應,最後我想了一下,估計要在委託的實現方法中關閉打開的視圖,結果的確如此!以上代碼修改爲:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[controller dismissModalViewControllerAnimated:YES];
}
或者:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[controller dismissViewControllerAnimated:YES completion:^{}];
}
兩種方式都可以的,這樣就能解決ios使用presentModalViewController打開viewController,相應viewcongroller上面的相關按鈕了!
同時在附加上 ios發送郵件的代碼:
-(void)sendMailComposerSheet
{
MFMailComposeViewController *mailCtrl = [[MFMailComposeViewController alloc] init];
mailCtrl.mailComposeDelegate = self;
[mailCtrl setSubject:@"郵件標題"];
[mailCtrl setMessageBody:@"郵件內容" isHTML:NO];
[self presentModalViewController:mailCtrl animated:YES];
}
相關的委託:MFMailComposeViewControllerDelegate
界面的處理
-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
[controller dismissModalViewControllerAnimated:YES];
}