2012-07-11 15 views
6

Próbuję zrobić zrzut ekranu i wysłać go pocztą e-mail przy użyciu programu do kompilacji poczty. Wszystko działa świetnie, z wyjątkiem tego, że kompozytor poczty nie odrzuci. Ten post wydaje się mieć ten sam problem, ale dostarczone rozwiązanie nie działa dla mnie. Can't dismiss the email composer view in iPhone?Kompozytor poczty iOS nie odrzuci

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

Powyższy kod działa świetnie. Jak nazwać tę dolną część. Wygląda na to, że kompilator po prostu pomija go.

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

} 

Z góry dziękuję.

Odpowiedz

17

Spróbuj

mailComposer.mailComposeDelegate = self; 

zamiast

mailComposer.delegate = self; 

Z MFMailComposeViewController documentation:

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

Przedmiotem delegat jest odpowiedzialny za odrzucając pogląd przedstawiony przez ten kontroler widok na odpowiedni czas. Dlatego zawsze powinieneś zapewnić delegata i ten obiekt powinien implementować metody protokołu MFMailComposeViewControllerDelegate.

+0

Dzięki za szybką odpowiedź. To zadziałało. – talbright

+0

Fajny połów. Nigdy tego nie widziałem. –

+0

Dosłownie pracował przez wiele godzin próbując znaleźć mój problem, a to naprawiło !!! – Mark

2

Jestem pewien, że ostatni wiersz powinien być

[self dismissModalViewControllerAnimated:YES]; 

ViewController który przedstawił widok modally, odrzuca ją również.

+0

Zgadza się, sposób, w jaki to napisał, również powinien działać, ale preferowanym sposobem jest ten, który opisałeś [Apple Docs on Dismissing] (http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ ModalViewControllers.html # // apple_ref/doc/uid/TP40007457-CH111-SW14) – Bersaelor

Powiązane problemy