6

スクリーンショットを撮り、メールコンポーザーを使用してメールで送信しようとしています。メールコンポーザーが却下しないことを除いて、すべてがうまく機能します。この投稿にも同じ問題があるようですが、提供された解決策は私にはうまくいきませんでした。iPhoneのメールコンポーザービューを閉じることはできませんか?

- (IBAction)Email:(id)sender {
UIGraphicsBeginImageContext(self.view.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

NSData * imageData = UIImageJPEGRepresentation(image, 1.0);

if ( [MFMailComposeViewController canSendMail] ) {
    MFMailComposeViewController * mailComposer = [[[MFMailComposeViewController alloc] init] autorelease];
    mailComposer.delegate = self;
    [mailComposer setSubject:@"Risk Assessment"];
    [mailComposer addAttachmentData:imageData mimeType:@"image/jpeg" fileName:@"attachment.jpg"];     
    [self presentModalViewController:mailComposer animated:YES];        
}
}

上記のコードはうまく機能します。この下部をどのように呼びますか。コンパイラはそれをスキップするようです。

-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{
if (error){
    NSString *errorTitle = @"Mail Error";
    NSString *errorDescription = [error localizedDescription];
    UIAlertView *errorView = [[UIAlertView alloc]initWithTitle:errorTitle message:errorDescription delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    [errorView show];                
    [errorView release];
}
[controller dismissModalViewControllerAnimated:YES];

}

前もって感謝します。

4

2 に答える 2

17

試す

mailComposer.mailComposeDelegate = self;

それ以外の

mailComposer.delegate = self;

MFMailComposeViewControllerのドキュメントから:

@property(nonatomic,assign) id<MFMailComposeViewControllerDelegate> mailComposeDelegate;

デリゲートオブジェクトは、適切なタイミングでこのビューコントローラによって提示されたビューを閉じる責任があります。したがって、常にデリゲートを提供する必要があり、そのオブジェクトはMFMailComposeViewControllerDelegateプロトコルのメソッドを実装する必要があります。

于 2012-07-11T14:30:37.407 に答える
2

最後の行は

[self dismissModalViewControllerAnimated:YES];

ビューをモーダルに表示した ViewController もそれを閉じます。

于 2012-07-11T14:31:46.627 に答える