我是新手,
我的viewController中有这段代码,
- (void)sendMail:(id)sender {
NSArray *to = [NSArray arrayWithObjects:@"rayjada11@gmail.com", 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:错误Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)"UserInfo={Message=服务连接中断}2016-09-0514:55:24.989 mailDemo[1276:104 . 171]试图取消演示控制器,而过渡已经。(<_UIFullscreenPresentationController: 0x7fe35b52d2a0>) 2016-09-0514:55:24.991 mailDemo[1276:104171] transitionViewForCurrentTransition未设置,表示控制器在演讲吗?(& lt; _UIFullscreenPresentationController: 0 x7fe35b52d2a0>)
有什么问题吗?
您的代码没有任何问题。
MFMailComposeViewController
不适合模拟器,请在实际设备中尝试相同的代码。模拟器不支持方法,设备不登录邮件,此方法无响应。
替换此方法::
- (void)sendMail:(id)sender {
if (![MFMailComposeViewController canSendMail]) {
NSLog(@"Mail services are not available.");
return;
}
else{
NSArray *to = [NSArray arrayWithObjects:@"rayjada11@gmail.com", 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];
}
}
MFMailComposeViewController不适用于模拟器。如果您在实际设备中尝试相同的代码,它将工作。你的代码没有问题