2015-12-28 1 views
1

У меня проблема: я хочу знать статус задания печати. Я распечатываю PDF-файл, который временно хранится в облачном накопителе. Я хочу удалить этот файл после завершения задания на печать. Как я могу реализовать это быстро? Вот отрывок из моего кода:Получить статус работы UIPrintInteractionController в Swift

// 1 
    let printController = UIPrintInteractionController.sharedPrintController() 
    // 2 
    let printInfo = UIPrintInfo(dictionary:nil) 
    printInfo.outputType = UIPrintInfoOutputType.General 
    printController.showsNumberOfCopies = false 
    printController.showsPageRange = false 
    printInfo.jobName = "PDF ID: " + pdfObjectID 
    printController.printInfo = printInfo 

    // 3 
    //let formatter = UIMarkupTextPrintFormatter(markupText: "Test") 
    let formatter = pdf.viewPrintFormatter() 
    formatter.contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) 
    printController.printFormatter = formatter 

    // show PrintController 
    printController.presentAnimated(true, completionHandler: nil) 

Есть ли у вас какие-либо предложения? Спасибо :)

+0

Не можете использовать завершение для этой цели? –

+0

Да, я так думаю, но я понятия не имею, как это сделать. Ссылаясь на эту страницу [Справочник по UIKit Framework] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIPrintInteractionController_Class/#//apple_ref/occ/clm/UIPrintInteractionController/sharedPrintController) Я должен использовать метод 'UIPrintInteractionCompletionHandler'. Можете ли вы представить мне пример? – CortexA8

ответ

1

Я не проверял это сам, но в соответствии с документацией, вы можете передать UIPrintInteractionCompletionHandler как completionHandler: параметра а:

Когда приходит к выводу задания на печать, вы можете сбросить любое состояние набора для печати и выполнения связанных с этим задач.

Простой пример:

printController.presentAnimated(true) { (controller, success, error) -> Void in 
     if success { 
      // Printed successfully 
      // Remove file here ... 
     } else { 
      // Printing failed, report error ... 
     } 
    } 
+0

Mh этот код выглядит хорошо, но он не работает. У меня есть добавленное окно, чтобы подтвердить, что печать в порядке, но было бы очень приятно, если я смогу решить эту проблему автоматически – CortexA8

1

В дополнение ответ Мартина ¨R, вы можете добавить обработчик завершения, объявив закрытие. Это будет полезно, если вы хотите, чтобы представить контроллер печати по-разному в зависимости от устройства:

let printCompletionHandler: UIPrintInteractionCompletionHandler = { (controller, success, error) -> Void in 
     if success { 
      // Printed successfully 
      // Remove file here ... 
     } else { 
      // Printing failed, report error ... 
     } 
    } 

    if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Pad { 
     printController.presentFromRect(self.printButton.frame, inView: self.view, animated: true, completionHandler: printCompletionHandler) 
    } else { 
     printController.presentAnimated(true, completionHandler: printCompletionHandler) 
    } 

Таким образом, вы можете использовать один и тот же обработчик завершения обоих вызовов :)