iPad iOS7黑屏上的MFMessageComposeViewController addAttachmentData

时间:2013-11-25 10:41:55

标签: ios iphone ipad ios7 imessage

我有一个MFMessageComposeController,我想通过iMe​​ssage发送图像(我的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. 出现黑屏时,无法返回应用。您必须终止该应用,然后重新启动。

  3. 遇到同样问题的人?请帮忙。感谢。

2 个答案:

答案 0 :(得分:0)

尝试改变:

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

为:

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

答案 1 :(得分:0)

延迟一段时间后调用presentMessageController方法

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