我有一个MFMessageComposeController,我想通过iMessage发送图像(我的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已打开)。
重要提示:
在iPad上测试时会发生这种情况(我只在iPad 2上测试过,安装了iOS 7.0.3)。相同的代码在iPhone 5,4,4S与iOS 7.0.3中完美配合。
出现黑屏时,无法返回应用。您必须终止该应用,然后重新启动。
遇到同样问题的人?请帮忙。感谢。
答案 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];