获取MFMailComposeViewController中的Recepients列表

我在我的应用程序中使用MFMailcomposerViewController。 一切工作正常,除了我需要有没有。 的收件人和用户发送给收件人的列表。 任何关于这个问题的帮助或解决scheme

我没有一个标准的方法来做到这一点,委托方法mailComposeController:didFinishWithResult:error:给你的composer php视图控制器已被驳回后的引用,但没有MFMailComposeViewController您可以用来获取收件人计数

解决方法是检查视图控制器的子视图,find用于容纳收件人的文本字段并获取文本:see here

最后,我得到了答案,并希望分享它…我从[博客]取得了很大的帮助: http : //jomnius.blogspot.com/2011/02/how-to-find-mfmailcomposeviewcontroller.html

 for (int x=0; x<[emailArray count]-1; x++) { NSLog(@"%d). %@",x+1,[emailArray objectAtIndex:x]); NSString *element = [emailArray objectAtIndex:x]; NSArray *arr = [element componentsSeparatedByString:@" & "]; if ([arr count]==1) { ++emailCount; } else{ int more = [[[arr objectAtIndex:1] substringToIndex:1] intValue]; emailCount+=(more+1); } } - (NSString *)findEmailAddresses:(UIView *)view depth:(NSInteger)count { NSString *eAddress = nil; if (!view) return eAddress; NSMutableString *tabString = [NSMutableString stringWithCapacity:count]; for (int i = 0; i < count; i++) [tabString appendString:@"-- "]; NSLog(@"%@%@", tabString, view); if ([view isKindOfClass:[UITextField class]]) { // MAGIC: debugger shows email address(es) in first textField // but only if it's about max 35 characters if (((UITextField *)view).text) { eAddress = [NSString stringWithString:((UITextField *)view).text]; NSLog(@"FOUND UITextField: %@", eAddress ? eAddress : @""); [emailArray addObject:eAddress]; } } NSArray *subviews = [view subviews]; if (subviews) { for (UIView *view in subviews) { NSString *s = [self findEmailAddresses:view depth:count+1]; if (s) eAddress = s; } } return eAddress; } 

从iOS 6开始,没有办法做到这一点,因为现在通过对远程进程(MailCompositionService)的XPC服务调用完成邮件组合。 这里有一个很好的解释: http : //oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/ 。 视图层次结构中的最低级别现在是一个与远程进程接口的_UIRemoteView。 http://jomnius.blogspot.com/2011/02/how-to-find-mfmailcomposeviewcontroller.html中的博客post的代码现在总是返回nil&#x3002;