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

NSString *eventResult = nil;

[self dismissModalViewControllerAnimated:YES];

switch (result) {

    case MFMailComposeResultSent:

            eventResult = @"Mail Sent Succesfully";
            break;

    case MFMailComposeResultSaved:

            eventResult = @"Saved into draft";
            break;
    case MFMailComposeResultCancelled:

            eventResult = @"Mail Canceled";
            break;
    case MFMailComposeResultFailed:

            NSLog(@"Mail Fail:%@",[error localizedDescription]);
            eventResult = @"Mail failed";
            break;
}
    //alert for show status of mail

UIAlertView *mailStatusAlert  = [[UIAlertView alloc]initWithTitle:@"Email Alert" message:eventResult delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
[mailStatusAlert show];
[mailStatusAlert release]

上記のコードを使用してメールステータスを処理しましたが、wifiがオンの場合は正常に機能していますが、wifiがオフの場合はエラーのように表示されません。しかし、私はそのチェックが必要です。そのエラーを処理する他の方法はありますか?私のアプリは縦向きしかサポートしていないので、横向きのmailcomposeviewcontrollerの向きを無効にできますか?

4

2 に答える 2

2

公式ドキュメントから、セクションの概要で、その問題についての説明があります:

これにより、機内モードなど、ユーザーがネットワークにアクセスできない状況でもメールを生成できます。このインターフェースは、電子メールが実際に送信されたかどうかを確認する方法を提供しません。

したがって、電子メールを生成するときまでにインターネット接続について心配する必要はありません。

spider1983で述べられているように、AppleまたはサードパーティのReachabilityクラスを使用してインターネット接続を確認する価値があります(最後のクラスはARCおよびGCDと互換性があります)

于 2012-12-28T12:26:27.350 に答える
0
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];

if(controller){

   controller.mailComposeDelegate = self;
   [controller setSubject:@"My Subject"];
   [controller setMessageBody:@"Hello there." isHTML:NO]; 
   [self presentModalViewController:controller animated:YES];
   [controller release];
}else{
   // your mail address is not configure
}
于 2012-12-28T12:30:58.480 に答える