【问题标题】:MFMailComposer Dismissing immediately after launchMFMailComposer 启动后立即关闭
【发布时间】:2013-11-06 22:44:15
【问题描述】:

我正在尝试在 iOS 7 模拟器上启动 MFMailComposer,一旦它出现,它就会立即自行消失,并且在调试器中出现以下错误。

_serviceViewControllerReady:error: Error Domain=NSCocoaErrorDomain Code=4097 "The     operation couldn’t be completed. (Cocoa error 4097.)"

这是我的代码

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    switch (buttonIndex) {
        case 0:
            break;
        case 1:{
            if ([MFMailComposeViewController canSendMail]) {
                MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
                mailViewController.mailComposeDelegate = self;
                [mailViewController setSubject:[NSString stringWithFormat:@"%@ Totals Report",_teamStats.relationshipTeam.teamName]];
                [mailViewController setMessageBody:@"\n\n\n\n\nSent From HoopMetrics" isHTML:NO];
                // Attach a doc to the email

                NSData* data =  [_teamStats.relationshipTeam  pdfDataFromString:_teamStats.teamTotalsAsString];
                [mailViewController addAttachmentData:data mimeType:@"application/pdf" fileName:@"Totals Report"];
                [self presentViewController:mailViewController animated:YES completion:nil];

            }
            else{
                HMAlertView*alert = [[HMAlertView alloc]initWithTitle:@"No Email" message:@"Please, set up an email account on your device" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
                [alert show];
            }
        }
            break;
}

【问题讨论】:

标签: ios7 mfmailcomposeviewcontroller mfmailcomposer


【解决方案1】:

我遇到了同样的问题。只需关闭 UINavigationBarUIBarButtonItem 或 MFMailComposeViewController 可能使用的其他元素的 外观 自定义。

【讨论】:

  • 在我的情况下,它是 -[[UIBarButtonItem appearance] setBackButtonBackgroundImage:forState:barMetrics:] 造成的。其他外观自定义似乎没有问题。
  • 就我而言,这是由于[[UITableView appearance] setSeparatorInset:UIEdgeInsetsZero]
【解决方案2】:

您可以使用performSelector 来解决这个问题:

- (IBAction)sendEmail:(id)sender {
  [self performSelector:@selector(showEmailComposer) withObject:nil afterDelay:0.0];

}

-(void) showEmailComposer{


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

  //Set recipients...other stuff
  [mailViewController setToRecipients:recipients];
  [mailViewController setSubject:subject];
  [mailViewController setMessageBody:body isHTML:isHTML];


  mailViewController.title = @"Email VC Title";


  mailViewController.mailComposeDelegate = delegate;
  [self presentViewController:mailViewController
                     animated:YES
                   completion:NULL];

}

【讨论】:

    猜你喜欢
    • 2012-05-13
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2015-07-16
    • 2020-08-22
    • 1970-01-01
    • 2018-07-21
    相关资源
    最近更新 更多