2016-05-11 3 views
1

J'ai besoin de AirPrint dans Xcode en arrière-plan sans interaction de l'utilisateur. Je m'en fous si je dois utiliser un framework tiers pour le faire. Voici le code que j'ai, mais nécessite l'interaction de l'utilisateur.automatique AirPrint IOS

NSMutableString *printBody = [NSMutableString stringWithFormat:@"%@",TextField.text]; 

    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; 
    pic.delegate = self; 


    UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
    printInfo.outputType = UIPrintInfoOutputGeneral; 
    printInfo.jobName = @"PrintJob"; 
    pic.printInfo = printInfo; 


    UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc] initWithText:printBody]; 
    textFormatter.startPage = 0; 
    textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); 
    textFormatter.maximumContentWidth = 6 * 72.0; 
    pic.printFormatter = textFormatter; 
    pic.showsPageRange = YES; 


void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { 
    if (!completed && error) { 
     NSLog(@"Printing could not complete because of error: %@", error); 
    } 
}; 


    [pic presentAnimated:YES completionHandler:completionHandler]; 

Si quelqu'un pouvait vous aider, ce serait génial!

+1

vous voulez imprimer automatique sans aucune action? – iOS

+1

Avez-vous regardé ici?: Https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIPrintInteractionController_Class/index.html#//apple_ref/occ/instm/UIPrintInteractionController/printToPrinter:completionHandler: – tptcat

+0

Oui @ DarjiJigar c'est ce que je veux faire – Connor

Répondre

0

I found a video that helped a lot! C'était la vidéo wwdc pour iOS 8, ils ont juste introduit une nouvelle façon d'imprimer sans utiliser UIPrintInteractionController. C'est ici.

-(IBAction)print:(id)sender{ 

     NSMutableString *printBody = [NSMutableString stringWithFormat:@"Hey this is a test lets hope it works!"]; 

     UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; 
     pic.delegate = self; 


     UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
     printInfo.outputType = UIPrintInfoOutputGeneral; 
     printInfo.jobName = @"PrintJob"; 
     pic.printInfo = printInfo; 


     UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc] initWithText:printBody]; 
     textFormatter.startPage = 0; 
     textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); 
     textFormatter.maximumContentWidth = 6 * 72.0; 
     pic.printFormatter = textFormatter; 
     pic.showsPageRange = YES; 
//save your printer using code also in video. 

     UIPrinter *SavedPrinterUserDefaults = [[NSUserDefaults standardUserDefaults] 
              objectForKey:@"SavedPrinter"]; 
     [pic printToPrinter:SavedPrinterUserDefaults 
     completionHandler:^(UIPrintInteractionController *printInteractionController, BOOL completed, NSError *error) { 
      if (completed && !error) 
      NSLog(@"YAYA! it printed"); 
     }]; 

    } 

J'espère que cela aide tous ceux qui ont le même problème. Here is more to read about what you can do with this new API!