在Swift中获取UIPrintInteractionController的作业状态

时间:2015-12-28 14:38:02

标签: ios swift ios9 airprint

我遇到了问题:我想知道打印作业的状态。我打印出一个临时存储在云端驱动器中的PDF文件。我想在打印作业完成后删除该文件。如何快速实现这一点? 以下是我的代码片段:

 // 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)

你有什么建议吗? 谢谢:))

2 个答案:

答案 0 :(得分:1)

我自己没有测试过,但根据文档, 您可以将UIPrintInteractionCompletionHandler作为completionHandler:参数传递:

  

当打印作业结束时,您可以重置为打印设置的任何状态并执行相关的内务处理任务。

一个简单的例子:

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

答案 1 :(得分:1)

为了补充Martin R的答案,您可以通过声明闭包来添加完成处理程序。如果您希望根据设备提供不同的打印控制器,这将非常有用:

posts

这样,您可以对两个调用使用相同的完成处理程序:)