点击电子邮件地址时设置默认主题
我用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]; }