Подтвердить что ты не робот

MFMailComposeViewController сразу увольняется

Ситуация будет представлена ​​MFMailComposeViewController. Я видел, что он был представлен на полпути, но затем его уволили.

Это ошибка:

_serviceViewControllerReady: error: Error Domain = _UIViewServiceInterfaceErrorDomain Code = 3 "Операция не может быть выполнена. (_UIViewServiceInterfaceErrorDomain ошибка 3.)"

Это мой исходный код для представления MFMailComposeViewController:

-(void) MailExecute {
    if ([MFMailComposeViewController canSendMail]) 
    {
        MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];   
        mailViewController.mailComposeDelegate = self;
        [mailViewController setSubject:NSLocalizedString(@"Check this new look", @"")];
        [mailViewController setMessageBody: @"my new look" isHTML:YES];

        [self presentModalViewController:mailViewController animated:YES];

        [mailViewController release];
    }
    else 
    {
        UIAlertView *alertInternal = [[UIAlertView alloc]
                                      initWithTitle: NSLocalizedString(@"Notification", @"")
                                      message: NSLocalizedString(@"You have not configured your e-mail client.", @"")
                                      delegate: nil
                                      cancelButtonTitle:NSLocalizedString(@"OK", @"")
                                      otherButtonTitles:nil];
        [alertInternal show];
        [alertInternal release];
    }
}

Странная точка в том, что иногда это происходит, иногда это не так. Пожалуйста помоги мне с этим! Я трачу почти 1 рабочий день, чтобы решить это, но не получилось.

4b9b3361

Ответ 1

Ваш код выглядит правильно, и, как указано, сообщение об ошибке настоятельно указывает, что это имеет отношение к UIView правильному (не MFMail). Проблема почти наверняка лежит где-то в другом месте вашего кода и может быть сложной для устранения неполадок.

Некоторые вещи, которые нужно искать:

  • Другие анимации или переходы/уклонения контроллера просмотра происходят одновременно или неправильно (возможно, как это)
  • Проблемы с выпуском/сохранением, конечно

Если ничто из этого не похоже на исправление, попробуйте комментировать все остальные, происходящие в контроллере представления, который вызывает этот метод и видит, работает ли он тогда.

Если вы все еще не можете заставить его работать, представите простейшую версию, которая может быть выведена из строя, чтобы мы могли устранить неисправность.:)

Ответ 2

Эта проблема может возникать при отображении контроллера удаленного вида - контроллер представления выполняется в другом процессе - как указано UIViewService reference в сообщении об ошибке.

У меня возникла проблема при отображении SKStoreProductViewController, который также является контроллером удаленного просмотра. Я не уверен, в чем причина. единственная вещь, которая, казалось, вызывала это для меня, неоднократно представляла контроллер вида.

Для SKStoreProductViewController я смог проверить эту ошибку в блоке завершения метода loadProductWithParameters:completionBlock:. Предоставляет ли MFMailComposeViewControllerDelegate обратный вызов с ошибкой об этом? Возможно, все, что вы можете сделать, это прослушать эту ошибку и показать пользователю сообщение об ошибке.

Мы должны оба, возможно, зарегистрировать яблочный радар об этом.

Ответ 3

Есть ли у вас что-нибудь в ваших методах viewDidDisappear: или viewWillDisappear, которые отклонят контроллер вида?

Если нет, можете ли вы опубликовать больше своего кода для ViewController, который представляет MFMailComposeViewController?

Ответ 4

Я знаю, что это поздний ответ, но может помочь другому.

Теперь перед тем же вопросом, по resetting the simulator работает отлично для меня для этой же проблемы. Дайте мне знать, если это поможет.

Ответ 5

После того как я сохранил MFMailComposeViewController в сильном свойстве моего класса вместо локальной переменной, я больше не мог воспроизвести поведение, отклоняющее поведение.

Ответ 6

Проблема для меня была неправильным аргументом при вызове функции вложения. Если у вас возникла эта проблема с вложением электронной почты, я предлагаю следующее решение, найденное в этом потоке, следующим образом:

NSString *path = [self getDatabaseFilePath];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"application/x-sqlite3" fileName:[path lastPathComponent]];

Ответ 7

MFMailComposeViewController * mailComposer = [[MFMailComposeViewController alloc] init];

if ([MFMailComposeViewController canSendMail])
{
    mailComposer.mailComposeDelegate = self;
    [mailComposer setToRecipients:[NSArray arrayWithObject:@"[email protected]"] ];
    [mailComposer setSubject:@"Kapsie App Contact Support"];
    [mailComposer setMessageBody:@"Type Your Feedback message here" isHTML:NO];
    [self presentViewController:mailComposer animated:YES completion:nil];
}

Используйте вышеуказанный код и проверьте его на устройстве.

Ответ 8

Использование modelViewController устарело в iOS 6, используйте

[self presentViewController:mailView animated:YES completion:nil];

Ответ 9

Я сталкиваюсь с той же проблемой, и решение было:

Я удаляю общий код, связанный с появлением приложения, например

[[UILabel appearance]setText:@""] 

и замените на код

[[UILabel appearanceWhenContainedIn:[self class], nil] setText:@""];

Теперь он работает нормально, поэтому будьте осторожны при изменении общего вида приложения: это может быть вид навигационной панели, поэтому и так