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

Приложение ios: приложение попыталось представить контроллер модального просмотра nil

Я разрабатываю приложение, необходимо открыть композитор электронной почты нажатием кнопки UIAlertView.

Сообщение

которое находится в тексте сообщения электронной почты, копируется из UITextView. Я использую следующий снимок кода:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0)
  {
      // opening message composer
  }
else
  {
   MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;
    [picker setSubject:@"Test mail"];
    [picker setMessageBody:messageBody.text isHTML:YES];
    [self presentViewController:picker animated:YES completion:NULL];
  }
}
 // mail compose delegate
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
      [self dismissViewControllerAnimated:YES completion:NULL];
}

но проблема в том, что я получаю сообщение об ошибке, заявляя, что приложение пыталось представить на своем контроллере nil modal view. как мы можем открыть почтовый композитор по умолчанию в ios 7?

4b9b3361

Ответ 1

В соответствии с Apple, вы должны проверить, что MFMailComposeViewController могут отправлять вашу почту непосредственно перед отправкой

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
if ([MFMailComposeViewController canSendMail]) {
     picker.mailComposeDelegate = self;
    [picker setSubject:@"Test mail"];
    [picker setMessageBody:messageBody.text isHTML:YES];
    [self presentViewController:picker animated:YES completion:NULL];
}

Ссылка: URL-адрес Apple Dev


Ответ 2

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