0

ファイルを送信するために電子メール シートを開いています。アプリに戻れないことを除けば、うまく機能します。

キャンセルボタンを押すと、下書きを削除するか保存するかを尋ねられ、そこにとどまります。アプリのページには戻りません。

コード:

//send email log-------------------------
    NSLog(@"mail");
    [[CCDirector sharedDirector] pause];

    picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;

    //Fill in the email as you see fit
    NSArray *toRecipients = [NSArray arrayWithObject:@"name@gmail.com"]; 
    [picker setToRecipients:toRecipients];


    NSArray *paths2 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *dataPath = [[paths2 objectAtIndex:0] stringByAppendingPathComponent:@"Test.txt"];
    NSData *data = [NSData dataWithContentsOfFile:dataPath];
    [picker addAttachmentData:data mimeType:@"text/txt" fileName:@"Test.txt"];

    NSString *emailBody = @"Test   ";
    [picker setMessageBody:emailBody isHTML:NO];
    [picker setSubject:@"hardware test ##   "];

    //display the view
    [[[CCDirector sharedDirector] openGLView] addSubview:picker.view];
    [[CCDirector sharedDirector] stopAnimation]; 

編集:

回答で提案されている関数をここに追加しました。キャンセルを押すと関数が呼び出されますが、そのシートに残ります。私はcclayer(cocos2d)を使用していると言わざるを得ないので、レイヤーは次のように定義されています:

@interface HelloWorldLayer : CCLayer< MFMailComposeViewControllerDelegate>

他の提案はありますか?

どうもありがとう。

4

1 に答える 1

4

デリゲートメソッドを実装する必要があります

- (void)mailComposeController:(MFMailComposeViewController*)controller
        didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error

そこでView Controllerを閉じます:

[picker dismissViewControllerAnimated:YES completion:^{}];

アップデート:

- (void)mailComposeController:(MFMailComposeViewController*)controller
            didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
    [picker dismissViewControllerAnimated:YES completion:^{}];
}
于 2012-05-12T17:29:44.520 に答える