点击电子邮件地址时设置默认主题

我用UITextView.code的dataDetectorTypes属性工作正常。

当我点击链接电子邮件composer php出现与预填充到:[电子邮件地址],但我想设置默认主题:[主题string]也。

我怎样才能做到这一点?

1)Fist添加<UITextViewDelegate, MFMailComposeViewControllerDelegate>到包含textview的类。

你必须添加两个导入到这个类:

 #import <MessageUI/MessageUI.h> #import <MessageUI/MFMailComposeViewController.h> 

2)添加一个variables: MFMailComposeViewController (在这个例子中,mailVC,你也可以将它作为一个类属性添加到你的.h中)

3)执行下一个方法:

 - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange 

这允许拦截特定的URL交互。 您可以取消特定的交互并添加自己的操作,例如:

 -(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange{ //EXAMPLE CODE if ([[URL scheme] isEqualToString:@"mailto"]) { mailVC = [[MFMailComposeViewController alloc] init]; [mailVC setToRecipients:@[@"your@destinationMail.com"]]; [mailVC setSubject:@"A subject"]; mailVC.mailComposeDelegate = self; [self presentViewController:mailVC animated:YES completion:^{ // [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; }]; return NO; } return YES; } 

3)closures你的MFMailComposeViewControllervariables:

 -(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{ [mailVC dismissViewControllerAnimated:YES completion:nil]; } 

这对我行得通!

  MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init]; mailController.mailComposeDelegate = self; if([MFMailComposeViewController canSendMail]){ [mailController setSubject:@"Subject"]; [mailController setMessageBody:@"Email body here" isHTML:NO]; [mailController setMessageBody:[self getInFo] isHTML:YES]; [mailController setToRecipients:[NSArray arrayWithObject:@"xx@xxx.com"]]; [mailController setTitle:@"Title"]; [self presentModalViewController:mailController animated:YES]; }else{ [mailController release]; }