2012-07-11 10 views
6

私はスクリーンショットを撮ってメール作曲家を使ってメールを送ろうとしています。メール作成者が却下しない限り、すべてがうまくいっています。このポストは同じ問題を抱えているようですが、提供されたソリューションは私のためには機能しませんでした。 Can't dismiss the email composer view in iPhone?iOS Mail Composerが却下されない

- (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]; 

} 

ありがとうございます。

答えて

17

MFMailComposeViewController documentationからではなく

mailComposer.delegate = self; 

mailComposer.mailComposeDelegate = self; 

をお試しください:

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

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

+0

迅速な対応をありがとうございます。これはうまくいった。 – talbright

+0

ニースキャッチ。それを見たことはありません。 –

+0

文字通り私の問題を見つけるために何時間も働いていましたが、これが修正されました! – Mark

2

私は最後の行は、モーダルビューを提示

[self dismissModalViewControllerAnimated:YES]; 

のViewControllerなければならないことをかなり確信している、また、それを閉じます。

+0

そうです、彼が書いたやり方はうまくいくはずですが、好きな方法は[Apple Docs on Dismissing]です(http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ ModalViewControllers.html#// apple_ref/doc/uid/TP40007457-CH111-SW14) – Bersaelor

関連する問題