Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift nsprintoperation-检查用户选择了什么_Swift_Macos_Cocoa_Pdf_Printing - Fatal编程技术网

Swift nsprintoperation-检查用户选择了什么

Swift nsprintoperation-检查用户选择了什么,swift,macos,cocoa,pdf,printing,Swift,Macos,Cocoa,Pdf,Printing,使用此代码,我可以打印pdf文件: let dictDocuments = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]) let completePath = dictDocuments.appendingPathComponent("test.pdf") let pdfDocument = PDFDocument(url: com

使用此代码,我可以打印pdf文件:

let dictDocuments = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
let completePath = dictDocuments.appendingPathComponent("test.pdf")
let pdfDocument = PDFDocument(url: completePath!)

let printInfoDict = NSMutableDictionary(dictionary: NSPrintInfo.shared().dictionary())
printInfoDict.setObject(NSPrintSpoolJob, forKey: NSPrintJobDisposition as NSCopying)
let printInfo = NSPrintInfo(dictionary: printInfoDict as! [String : Any])
printInfo.isHorizontallyCentered = true
printInfo.isVerticallyCentered = true
printInfo.scalingFactor = 1.5


let printOp = pdfDocument!.printOperation(for: printInfo, scalingMode: .pageScaleNone, autoRotate: true)!
printOp.runModal(for: self.view.window!, delegate: self, didRun: nil, contextInfo: nil)
我可以检查用户在打印面板中选择了哪个按钮吗?(取消或打印)

didRunSelector
参数指定的方法必须具有以下签名:

func printOperationDidRun(_ printOperation NSPrintOperation, success: Bool, contextInfo: UnsafeMutableRawPointer?)
如果打印操作运行到完成时没有取消或错误,则成功的值为
true
,否则为
false

如果将参数为
true
canspawneSeparateThread
发送到
NSPrintOperation
对象,则在随后调用
runOperationModalForWindow:delegate:didRunSelector:contextInfo:
时指定的委托可能会在生成的非主线程中发送消息

对于swift 5.1:

// prepare printOp
...

{
        //was: printOp.run()

        if let w = NSApp.mainWindow{
            let selector = #selector(printOperationDidRun(printOperation: success: contextInfo:))
            printOp.runModal(for: w, delegate: self,
                             didRun: selector,
                             contextInfo: nil)
        }
    }

    // apple docs:
    // - (void)printOperationDidRun:(NSPrintOperation *)printOperation  success:(BOOL)success  contextInfo:(void *)contextInfo

     @objc func printOperationDidRun( printOperation: NSPrintOperation,
                                      success: Bool,
                                      contextInfo: UnsafeMutableRawPointer?){
        // use callback..

    }

是的,我是这个医生。但是我不知道如何使用它:(而不是
…didRun:nil…
传递一个
选择器
…didRun:#选择器(printOperationDidRun(u:success:contextInfo:)
并实现该方法。啊,好的,谢谢。我尝试了
didRun:printOperation…
但是“选择器方式”对我来说是新的