Получение списка получателей в MFMailComposeViewController - PullRequest
6 голосов
/ 24 января 2012

Я использую MFMailcomposerViewController в моем приложении. Все работает нормально, за исключением того, что мне нужно иметь Нет. получателей и список получателей, которым отправляет пользователь. Любая помощь или решение по этому вопросу ..

Ответы [ 3 ]

2 голосов
/ 24 января 2012

У меня нет стандартного способа сделать это, метод делегата mailComposeController:didFinishWithResult:error: дает вам ссылку на контроллер представления композитора после его закрытия, но на MFMailComposeViewController нет методов доступа, которые вы могли бы использовать для получения количество получателей

Обходной путь - изучить подпредставления контроллера представления, найти текстовое поле, которое использовалось для хранения получателей, и получить текст: см. здесь

0 голосов
/ 22 ноября 2014

Начиная с iOS 6, сделать это невозможно, так как составление почты теперь выполняется посредством вызова службы XPC удаленному процессу (MailCompositionService).Здесь есть отличное объяснение: http://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/. Самым низким уровнем в иерархии представлений теперь является _UIRemoteView, который взаимодействует с удаленным процессом.Код из сообщения в блоге http://jomnius.blogspot.com/2011/02/how-to-find-mfmailcomposeviewcontroller.html теперь всегда будет возвращать ноль.

0 голосов
/ 14 июня 2012

Наконец-то я получил ответ и хотел поделиться им ... Мне очень помогла [blog]: 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...