В моем приложении MFMailComposeViewController работает нормально, но создать новый экземпляр MFMessageComposeViewController не удается.
Вот код для обоих:
-( IBAction)sendSMS: (id)sender
{
MFMessageComposeViewController *picker = [[[MFMessageComposeViewController alloc] init] autorelease];
picker.messageComposeDelegate = self;
NSArray *toRecipients = [NSArray arrayWithObject: cell.currentTitle ];
picker.recipients = toRecipients;
[self presentModalViewController:picker animated:YES];
}
-( IBAction)sendEmail: (id)sender
{
MFMailComposeViewController *picker = [[[MFMailComposeViewController alloc] init] autorelease];
picker.mailComposeDelegate = self;
NSArray *toRecipients = [NSArray arrayWithObject: email.currentTitle ];
[picker setToRecipients:toRecipients];
[self presentModalViewController:picker animated:YES];
}
Кажется очевидным, что все связывается правильно, потому что контроллер представления электронной почты работает хорошо. Есть что-то, чего мне не хватает, может быть, в настройке?
Проверяли ли вы + [MFMessageComposeViewController canSendText]
?
Из MFMessageComposeViewController Class Reference ,
Перед представлением представления композиции сообщения, вызовите метод класса
canSendText
, чтобы убедиться, что устройство пользователя правильно настроено. Не пытайтесь представить представление композиции сообщения, если метод canSendText возвращает NO. Если доставка SMS недоступна, вы можете уведомить пользователя или просто отключить функции SMS в своем приложении.Начиная с iOS 5, вы можете зарегистрироваться, чтобы получать уведомления об изменениях в доступности отправки текстовых сообщений с помощью уведомления
MFMessageComposeViewControllerTextMessageAvailabilityDidChangeNotification
.
Причины, по которым он может возвращать nil
:
Точно так же [[MFMailComposeViewController alloc] init]
возвращает nil
, если ни одна учетная запись электронной почты не включена (вы можете быстро проверить это, отключив учетные записи в настройках), но также показывает предупреждение «Не настроены почтовые учетные записи». MFMessageComposeViewController этого не делает.