MFMailComposeViewController не работает в альбомной ориентации - PullRequest
1 голос
/ 22 сентября 2011

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

mfmailcomposeviewcontroller в альбомной ориентации

Однако, он все еще действует так же. Короче говоря, мое приложение на основе View имеет, например, главный контроллер A и другие контроллеры B и C. B открыт поверх A и имеет MFMailComposeViewController, который при запуске скрывает B и возвращается к A.

Это очень странно, но я чувствую, что это связано с иерархией представления и где именно мне нужно добавить MFMailComposeViewController. При перезаписи (как в ссылке выше) этот код не решает мою проблему:

MailCompose *controller = [[MailCompose alloc] init];
controller.mailComposeDelegate = self;

Я ценю любые дополнительные предложения.

Вот код, который я использую:

if ([MFMailComposeViewController canSendMail]){

    MailCompose *picker = [[MailCompose alloc]init];


    //MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];//was before I subclassed
    picker.mailComposeDelegate = self;

    [picker setToRecipients:[NSArray arrayWithObject:@"info@site.com"]];
    [picker setSubject:@"Feedback"];

    [picker setMessageBody:emailBody isHTML:YES];

    picker.navigationBar.barStyle = UIBarStyleBlack;

    [self presentModalViewController:picker animated:YES];
    [picker release];
}

1 Ответ

0 голосов
/ 23 сентября 2011

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

  • код никогда не называется
  • устройство не отправляет почту

(эти два можно проверить с помощью отладчика)

  • вы представляете это представление не в том месте, например, из представления, которое уже представляет контроллер модального представления (не знал, возможно ли это?)
  • Вы добавили новое окно в приложение на уровне оповещения или строки состояния, это будет скрывать композитора при его представлении.

Немного из догадок, надеюсь, одна из них подойдет вам!

...