NSObject의 하위 클래스에 MFMailComposeViewController를 표시하는 클래스가 있습니다. 코드는 다음과 같습니다.MFMailComposeViewController 취소 버튼을 사용하여 닫지 않음
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
mailController.mailComposeDelegate = self;
[mailController setSubject:@"Sample Subject"];
[mailController setMessageBody:@"Here is some main text in the email!" isHTML:NO];
[mailController setToRecipients:@[self.email]];
UITabBarController *tabbarController = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
UINavigationController *navigationController = tabbarController.selectedViewController;
[navigationController.topViewController presentViewController:mailController animated:YES completion:NULL];
모든 것이이 코드에서 잘 작동합니다. 문제는 MFMailComposeViewController
을 기각하고 싶을 때입니다. 때로는 충돌이 일어나기도하고 때로는 아무 일도 일어나지 않는 경우가 있습니다. 나는 위임 기능을 구현했습니다 : 내가 보여줄과의 ViewController에서 그것을 directlty 해제하려고 그 후
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
UITabBarController *tabbarController = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
UINavigationController *navigationController = tabbarController.selectedViewController;
[navigationController.topViewController dismissViewControllerAnimated:YES completion:nil];
}
을하고 모든 작업을했다. 심지어 취소 버튼.
내 ViewController 클래스에서는 작동하지만 NSObject 내 하위 클래스에서는 작동하지 않는 이유를 알 수 없습니다.
나는 로그 검색된 충돌 얻을 때 :
-[MFMailComposeInternalViewController _notifyCompositionDidFinish]
가지고 ...이
의 ViewController 내가이 일을 희망
을 dissmiss하는
설정 위임처럼 싱글 톤 클래스에서 이것을 시도 MFMailComposeViewDelegat를 추가합니다. e 헤더 파일에 ...? –
예, 했어요. 글쎄, .m 파일에 추가했지만 동일합니다. –
추가 도움을 받으려면 충돌 로그와 관련된 정보를 게시하십시오. –