MFMessageComposeViewController addAttachmentData на iPad iOS7 черный экран

У меня есть MFMessageComposeController, и я хочу отправлять изображения через iMessage (SMS не доступен на моем iPad).

Это мой код:

- (void)presentMessageController {

 if(![MFMessageComposeViewController canSendAttachments])
 {
 UIAlertView *warningAlert = [[UIAlertView alloc] initWithTitle:@"Error"
 message:@"Your device doesn't support sharing photos via SMS!"
 delegate:nil
 cancelButtonTitle:@"OK"
 otherButtonTitles:nil];
 [warningAlert show];
 return;
 }

 MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
 messageController.messageComposeDelegate = self;

 [messageController addAttachmentData:imgData typeIdentifier:(NSString *)kUTTypePNG filename:@"image.png"];

 // Present message view controller on screen
 [self presentViewController:messageController animated:YES completion:nil];
}

Проблема, похоже, в [messageController addAttachmentData...]. MessageController не отображается, вместо этого появляется пустой экран, а приложение зависает, и через 1-2 секунды делегат отвечает MessageComposeResultCancelled, и я вижу это в консоли:

время ожидания ожидания ограждения от com.apple.mobilesms.compose

Предупреждение. Попытайтесь уйти от контроллера просмотра, пока выполняется презентация или увольнение!

Если я прокомментирую эту строку, появится messageController (открывается iMessage).

ВАЖНЫЙ:

  1. Это происходит при тестировании на iPad (я тестировал только iPad 2, с установленной iOS 7.0.3). Тот же код отлично работает в iPhone 5, 4, 4S с iOS 7.0.3.

  2. Когда появится черный экран, возврат к приложению невозможен. Вам нужно прекратить действие приложения и перезапустить его.

Кто-нибудь испытывает такую же проблему? Пожалуйста помоги. Благодарю.

2 ответа

Вызов метода presentMessageController после некоторой задержки

[self performSelector: @selector (presentMessageController) withObject: nil afterDelay: 0.5];


попробуйте изменить:

[messageController addAttachmentData:imgData typeIdentifier:(NSString *)kUTTypePNG filename:@"image.png"];

чтобы:

[messageController addAttachmentData:imgData typeIdentifier:@"public.data" fileName:@"image.png"];

licensed under cc by-sa 3.0 with attribution.