Я обнаружил, что [MFMailComposeViewController canSendMail]
возвращает неправильное значение при пробуждении приложения из фона после создания / удаления почтовой учетной записи.
В моем приложении есть некоторые функции, которые актуальны только при наличии почтовой рассылки.Поэтому я хочу отключить возможность использовать его с проверкой canSendMail.
Все работает хорошо, а не в следующем сценарии: 1. Удалить / отключить почтовую учетную запись на iPhone (сейчас я работаю и тестирую с iOS 4.2) 2Запустите приложение - все вещи отключены правильно.3. Нажмите кнопку «Домой» и откройте «Настройки».Создать и настроить почтовый аккаунт.4. Вернитесь в приложение - [MFMailComposeViewController canSendMail]
возвращает НЕТ, но почтовый аккаунт настроен.5. Нажмите кнопку «Домой», а затем снова вернитесь в приложение - [MFMailComposeViewController canSendMail]
возвращает ДА, как и должно быть.
Кроме того, это поведение воспроизводимо, наоборот, когда мы открываем приложение, заходим в настройки, удаляем почтовую учетную запись,обратно в приложение - canSendMail возвращает YES для первого открытия приложения после удаления и NO, как и во втором.
Я проверяю [MFMailComposeViewController canSendMail]
в функции - (void)applicationWillEnterForeground:(UIApplication *)application
ApplicationDelegate.
Itмне кажется, что MFMailComposeViewController хранит значение и есть какое-то событие, которое вынуждает его перечитывать доступность почты.Также я попытался добавить немного ожидания (1-2 секунды) в нужный поток или запустить другое приложение между настройками почты и запустить мое приложение - ничего не помогает.
У вас есть какие-либо идеи о том, как я могу получить правильное значение?для canSendMail?В противном случае единственный способ - убить QA, который обнаружил эту ошибку ...
Также следующий код тоже не работает.
Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if (mailClass != nil)
{
return [mailClass canSendMail];
}
return NO;
Есть предложения?