Мой MFMailComposeViewController в iOS6 больше не работает

Отмечено, что мой MFMailComposeViewController, который я использую для создания по электронной почте диалога для отправки электронной почты, больше не работает в iOS6. Он по-прежнему выводит диалог, но я не могу установить основной текст или ввести что-либо в представление. Все, что я могу сделать, это нажать "Отмена".

Класс реализует интерфейс MFMailComposeViewControllerDelegate, а здесь некоторый код:

//h file
@interface ASEmailSender : NSObject
//m file
@implementation MyEmailSender () <mfmailcomposeviewcontrollerdelegate>
@end
@implementation MyEmailSender
...
- (void)emailFile:(ASFile *)file inController:(UIViewController *)viewController {
 MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
 if ([MFMailComposeViewController canSendMail]) {
 mailController.mailComposeDelegate = self;
 [mailController setSubject:@"my subject"];
 [mailController setMessageBody:@"msg body here" isHTML:NO];
 [viewController showIsLoading:YES];
 self.viewController = viewController
 [viewController presentModalViewController:mailController animated:YES];
 } 
}
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
 [self.viewController dismissModalViewControllerAnimated:YES];
}
</mfmailcomposeviewcontrollerdelegate>

Он отлично работает в iOS5.

2 ответа

Я исправил это, изменив MyEmailSender как UIViewController, а не NSObject. По какой-то причине это устраняет проблему при работе в iOS6. Новый код выглядит так:

//h file
@interface ASEmailSender : UIViewController <mfmailcomposeviewcontrollerdelegate>
//m file
@implementation MyEmailSender
...
(same functions as before)
</mfmailcomposeviewcontrollerdelegate>

Теперь он работает как в iOS5, так и в iOS6.


Я исправил ту же проблему (в iOS6: пустой экран композитора работает только кнопка "Отмена", тогда как в iOS5 тот же код работает нормально.)

Я импортировал:

#import

Но я забыл об этом:

#import

После добавления импорта MessageUI.h больше проблем в iOS 6.

licensed under cc by-sa 3.0 with attribution.