0

編集:最終的にApple DTSに連絡しました。影響を受けたユーザーからスタックショットを提供した後、DTS は、Apple BugReporter にバグを報告する必要があると判断しました。ということで、現時点ではMFMailComposerの問題かと思いますが、未解決です。Apple バグ番号は 13602051 です

アプリで何度も発生するバグがあります。

iOS バージョンをアップグレードした一部のユーザーは、MFMailComposer を使用するアプリで電子メール エクスポートを使用できなくなったと報告しています。アプリがフリーズし、クラッシュ レポートが生成されません。

私のコードは非常に単純で、報告されたバグを再現することはできませんが、多くのユーザーは、これは iOS の更新後に発生すると述べています。コードは次のとおりです。

// using ARC, so no reference counting
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
@autoreleasepool {
  if (gpxFilePath) {
    NSData *gpx = [NSData dataWithContentsOfFile:gpxFilePath];
    [controller addAttachmentData:gpx mimeType:@"text/gpx" fileName:[self cleanFileName]];
    gpx = nil;
  }
}
[controller setSubject:subject];
[controller setMessageBody:body isHTML:YES];
[[MAP_APP_DELEGATE mainController] presentModalViewController:controller animated:YES];

これが呼び出された後、電子メール ビューが表示されますが、応答しません。

4

2 に答える 2

0

これで問題が解決するはずです。

[[MAP_APP_DELEGATE mainController] presentModalViewController:controller animated:YES];

 controller = nil;
于 2013-06-07T18:43:08.280 に答える
0

iOS 6.1 の次のコードを使用していますが、うまくいきます。

if ([MFMailComposeViewController canSendMail]) {
    MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc]init];
    mailer.mailComposeDelegate = self;
    [mailer setSubject:@"subject"];
    User *user = [user_array objectAtIndex:1];
    NSArray *toRecipients = [NSArray arrayWithObjects:@"mail address", nil];
    [mailer setToRecipients:toRecipients];
    NSArray *cc = [NSArray arrayWithObjects:@"mail address", nil];
    [mailer setCcRecipients:cc];
    NSDictionary *dic = [one array objectAtIndex:0];

    NSString *description = [dic objectForKey:@"Description"];

    NSString *emailBody = description;

    [mailer setMessageBody:emailBody isHTML:NO];
    [self presentViewController:mailer animated:YES completion:nil];
    [mailer release];
}
else
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure"
                                                    message:@"Your device doesn't support the composer sheet"
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles: nil];
    [alert show];
    [alert release];
}

シミュレーターは電子メールを送信できないため、この場合はアラート ビューが表示されることに注意してください。

注 1: presentModalViewController は iOS 6.0 で廃止されました。

注 2: データなしでメールを送信して、これが問題の原因であるかどうかを確認してください。

于 2013-03-08T08:06:02.763 に答える