Проблема с предупреждением MFMailComposeViewController об отсутствии почтовых учетных записей - SDK 3.0 против SDK 4.0 - PullRequest
4 голосов
/ 21 июня 2010

У меня проблема с этим фрагментом кода, когда я создаю его для разных базовых SDK:

MFMailComposeViewController *mail = nil;
mail = [[MFMailComposeViewController alloc] init];
NSString *description = @"Some mail string";
if([MFMailComposeViewController canSendMail])
{
    mail.mailComposeDelegate =self;
    [mail setSubject:story.title];
    [mail setMessageBody:[NSString stringWithFormat:(NSString *)kMessageBodyFormat,description,story.webLink] isHTML:NO];
}
[self presentModalViewController:mail animated:YES];
[mail release];
mail=nil;

Когда я собираю его с помощью базового SDK 3.0, в случае, если при MFMailComposeViewController's инициализация возвращает nil, что происходитесли у пользователя нет почтовых учетных записей, система выдает предупреждение «Нет почтовых учетных записей» по умолчанию.

Но когда я собираю его с помощью Base SDK 4.0 и развертываю его для ОС 3.0, пользователь делаетне имеет почтовых учетных записей, то же предупреждение не отображается системой, вместо этого presentModalViewController падает.

MFMailComposeViewController's инициализация возвращает ноль, если у пользователя нет учетных записей электронной почты в базовом SDK 3.0 и 4.0,но где-то presentModalViewController разумно выдает предупреждение в случае SDK 3.0, но SDK 4.0, развернутый в 3.0, дает сбой и дает сбой.

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

Спасибо, Радж

Ответы [ 2 ]

8 голосов
/ 17 октября 2011

Я нашел этот вопрос, когда у меня та же проблема.

Я думаю, потому что, если в телефоне не настроена учетная запись почты. [[MFMailComposeViewController alloc] init] возвращает ноль.

Итак, перед тем как представить контроллер вида, нам нужно проверить, равен он нулю или нет.

7 голосов
/ 22 июня 2010

Я только что провел некоторое бета-тестирование с iOS 4 и наткнулся на ваш пост.Я не мог понять, почему это было возвращение ноль, так что спасибо за ответ.Что касается ответа на ваш вопрос, вам просто нужно проверить, если это ноль.Если это ноль, тогда не представьте модальный контроллер представления.Это все еще покажет всплывающее окно.

...