1

NSObject 클래스에서 구현하려고하면 MFMailComposeViewController에 문제가 있습니다.MFMailComposeViewController NSObject 클래스에서 문제 표시 - iOS

저는 MFMailComposeViewController를 여러 번 사용했지만 항상 View Controller에서 사용했습니다.

그러나이 경우 사용자가 일반적으로 하나의 ViewController에있는 반면 실행되는 NSObject 클래스를 호출합니다. 그러나이 코드는 여러 뷰 컨트롤러에서 실행되므로 NSObject를 사용하고 작성자가 모든 뷰 컨트롤러 위에 표시 할 수있게해야합니다.

문제가 끝나면 전자 메일 작성자를 던져야하며 문제가 해결되지 않습니다. 대신 Mail Composer보기를 시작하지 않습니다.

위임장이 있으며 코드가 따르고 대리자는 .h 내에 있습니다.

MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init]; 

    if([MFMailComposeViewController canSendMail]){ 
     mc.mailComposeDelegate = self; 
     [mc setSubject:emailTitle]; 
     [mc setMessageBody:messageBody isHTML:NO]; 
     [mc setToRecipients:toRecipents]; 

     [[mc navigationBar] setTintColor: [UIColor whiteColor]]; // Text color 
     // Present mail view controller on screen 
     [self presentViewController:mc animated:YES completion:^{ 
      [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 
     }]; 

    } 


- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{ 
    switch (result) 
    { 
     case MFMailComposeResultCancelled: 
      // NSLog(@"Mail cancelled"); 
      break; 
     case MFMailComposeResultSaved: 
      // NSLog(@"Mail saved"); 
      break; 
     case MFMailComposeResultSent: 
      // NSLog(@"Mail sent"); 
      break; 
     case MFMailComposeResultFailed: 
      // NSLog(@"Mail sent failure: %@", [error localizedDescription]); 
      break; 
     default: 
      break; 
    } 

    // Close the Mail Interface 

    [self dismissViewControllerAnimated:YES completion:NULL]; 

} 

나는 또한 내가 작곡가가 밀어 VC를 통해 표시됩니다 것을 발견,이 방법을 사용하지만, AppDelegate에에 코드를 이동하고 작곡가를 발사하기 위해 NSObject의 클래스에서 알림을 사용하려고했지만, 경우 모달보기가 현재 표시되고 있지만 작곡가는 표시되지 않습니다.

마지막으로 필자는 완전히 별도의보기 컨트롤러를 추가하고 메일 작성기를 추가 한 다음 AppDelegate를 통해 추가하려고 시도했지만이 역시 푸시 된 VC 및 모달 VC가 아닌 경우에만 표시됩니다.

내 생각에 위의 작곡가를 표시하기 위해 탐색 스택의 '상단'을 찾아야하지만 100 % 확실하지는 않습니다.

코드가있는 경우 모달보기에 MailController를 추가 할 수 있으므로 가능해야한다고 느낄 수 있으므로이를 달성 할 수있는 방법을 밝힐 수있는 사람의 의견을 환영합니다. View Controller 그 자체이지만, 분명히 이것은 여러 VC의 코드를 추가해야 할 필요가 있음을 의미 할 수 있습니다.하지만, 할 수있는 한, 진행해야하는 이상한 방법 인 것처럼 보입니다.

감사합니다.

답변

1

나는 돌아와서 대답 할 것이라고 생각했다!

MFMailComposeViewController는 ViewController 내에서 실행되어야합니다. 이는 의도적으로 설계된 동작입니다.

+0

나는 지금이 문제에 부딪 혔고 문제는 직감적이었다. 내 의혹을 확인하기 위해 후속 조치를 게시 해 주셔서 감사합니다. – Adrian