1

MFMessageComposeController があり、iMessage 経由で画像を送信したい (私の iPad では SMS を使用できません)。

これは私のコードです:

- (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 からのフェンス バリアの待機中にタイムアウトしました

警告: プレゼンテーションまたは却下の進行中に、View Controller から却下しようとしています!

その行にコメントを付けると、messageController が表示されます (iMessage が開かれます)。

重要:

  1. これは、iPad でテストしたときに発生しています (iOS 7.0.3 がインストールされた iPad 2 のみでテストしました)。同じコードは、iOS 7.0.3 を搭載した iPhone 5、4、4S で完全に機能します。

  2. 黒い画面が表示されると、アプリに戻る方法がありません。アプリを終了して再起動する必要があります。

誰かが同じ問題を経験していますか? 助けてください。ありがとう。

4

2 に答える 2

0

変更してみてください:

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

に:

[messageController addAttachmentData:imgData typeIdentifier:@"public.data" fileName:@"image.png"];
于 2013-11-25T11:16:09.250 に答える