У меня есть UITableViewController, представляющий список контактов, когда пользователь выбирает строку, он покажет UIActionSheet, чтобы спросить пользователя о действии (позвонить, отправить смс...).
Пользователь выбирает действие, и этот первый UIActionSheet покажет другой UIActionSheet, содержащий номера телефонов.
Пользователь выбирает номер телефона, и это должно показать составитель SMS-сообщения.
Проблема в том, что когда пользователь выбирает номер телефона, представление компоновщика сообщений не отображается (только черный экран), и я получаю MessageComposeResultCancelled в didFinishWithResult MFMessageComposeViewController.
Что генерирует это предупреждение «Предупреждение: попытка отклонить от контроллера представления, пока выполняется презентация или отклонить!»
Как правильно вызвать и показать составитель смс сообщений?
(это прекрасно работает, если я вызываю его напрямую, когда пользователь выбирает строку в списке с помощью didSelectRowAtIndexPath)
Вот код:
1- вызов первого UIActionSheet в методе didSelectRowAtIndexPath:
UIActionSheet *popupQuery;
...
[popupQuery showInView:self.view];
2- вызов второго UIActionSheet в методе clickedButtonAtIndex:
UIActionSheet *popupQuery2;
...
[popupQuery showInView:self.view];
3- из того же метода вызовите композитор сообщения:
[self sendSMS:@"" recipientList:[phoneNumbers objectAtIndex:buttonIndex]];
метод, который показывает композитор сообщений:
(void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
if([MFMessageComposeViewController canSendText])
{
controller.body = bodyOfMessage;
controller.recipients = recipients;
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:YES];
}
}
canSendText
Возвращает логическое значение, указывающее, может ли текущее устройство отправлять текстовые сообщения. ОднакоcanSendText
может возвращать значение true в Симуляторе, поскольку на вашем Mac может быть установлено приложение сообщений (см. дополнительный вопрос mby .me/Gw) - person Dan Clarke   schedule 13.03.2013