2016-09-05 71 views
3

我是新来这个,MailCompositionService意外退出IOS

我在我的viewController这段代码,

- (void)sendMail:(id)sender { 
    NSArray *to = [NSArray arrayWithObjects:@"[email protected]", nil]; 

    mailComposer = [[MFMailComposeViewController alloc] init]; 
    mailComposer.mailComposeDelegate = self; 
    [mailComposer setToRecipients:to]; 
    [mailComposer setSubject:@"Test Mail"]; 
    [mailComposer setMessageBody:@"Testing message body" isHTML:NO]; 
    [self presentModalViewController:mailComposer animated:YES]; 
} 



#pragma mark - mail compose delegate 
-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { 
    if(result) { 
     NSLog(@"Result = %d", result); 
    } 
    if(error) { 
     NSLog(@"Error = %@", error); 
    } 
    [self dismissModalViewControllerAnimated:YES]; 
} 

但是,当我在我的控制器点击发送按钮,我得到的错误一样,

2016-09-05 14:55:24.488 mailDemo[1276:104171] viewServiceDidTerminateWithError: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted} 2016-09-05 14:55:24.989 mailDemo[1276:104171] Trying to dismiss the presentation controller while transitioning already. (<_UIFullscreenPresentationController: 0x7fe35b52d2a0>) 2016-09-05 14:55:24.991 mailDemo[1276:104171] transitionViewForCurrentTransition is not set, presentation controller was dismissed during the presentation? (<_UIFullscreenPresentationController: 0x7fe35b52d2a0>)

问题是什么?

+0

请在设置应用程序中检查您的设备登录邮件。 –

+0

检查后是否可以呈现邮件撰写控制器,然后在设备中使用邮件配置进行测试。 –

+0

我正在模拟器中测试它。 @BhadreshKathiriya – KAR

回答

2

你的代码没有问题。 MFMailComposeViewController不适用于模拟器,请在实际设备中尝试相同的代码。

+0

谢谢,我认为MFMailComposeViewController不能在模拟器中工作。 @ajay_nasa – KAR

+0

不用担心,快乐编码。 –

1

模拟器不支持方法和设备不在邮件登录,这种方法没有任何反应。

替换此方法::

- (void)sendMail:(id)sender { 


    if (![MFMailComposeViewController canSendMail]) { 
     NSLog(@"Mail services are not available."); 
     return; 
    } 
    else{ 
      NSArray *to = [NSArray arrayWithObjects:@"[email protected]", nil]; 

      mailComposer = [[MFMailComposeViewController alloc] init]; 
      mailComposer.mailComposeDelegate = self; 
      [mailComposer setToRecipients:to]; 
      [mailComposer setSubject:@"Test Mail"]; 
      [mailComposer setMessageBody:@"Testing message body" isHTML:NO]; 
      [self presentModalViewController:mailComposer animated:YES]; 
     } 
} 
0

MFMailComposeViewController不适用于模拟器工作。如果你在真实设备上尝试相同的代码,它将会起作用。你的代码没有问题。