首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻止NSPrintOperation使应用程序崩溃

阻止NSPrintOperation使应用程序崩溃
EN

Stack Overflow用户
提问于 2017-06-16 11:41:07
回答 2查看 197关注 0票数 0

我有以下几行代码来打印webView内容。

代码语言:javascript
复制
let directoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let printOpts: NSDictionary = [NSPrintJobDisposition: NSPrintSaveJob, NSPrintSaveJob: directoryURL, NSPrintScalingFactor: 2.0]
let printInfo = NSPrintInfo(dictionary: printOpts as! [String : AnyObject])

printInfo.horizontalPagination = .autoPagination
printInfo.verticalPagination = .autoPagination

let printOperation = NSPrintOperation(view: webView.mainFrame.frameView, printInfo: printInfo)
printOperation.printPanel.options = [.showsOrientation, .showsPaperSize, .showsPreview, .showsPageSetupAccessory, .showsScaling, .showsPrintSelection]
printOperation.run()

问题是,当用户与打印操作面板交互时,它有时会导致应用程序崩溃。

如果我只是点击cancel按钮,应用程序可能会崩溃。如果我尝试设置一个不同的比例速率,它有时会崩溃。我不知道为什么应用程序会崩溃。它总是最后一行。我做错了什么?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-06-16 14:08:03

.showsCopies不在选项中时,打印面板代码中有一个错误。它与副本相关的子视图有一个释放后使用的bug。它将它们从视图层次结构中删除,允许释放它们。但是,它保留了对文本字段的悬空引用,并尝试在各种情况下对其进行操作。例如,它有时会尝试让自己成为第一响应者。

基本上,您永远不应该尝试取消Copies字段。

票数 1
EN

Stack Overflow用户

发布于 2018-04-24 19:18:51

我在OS X上从URL打印pdf文件的代码如下:

代码语言:javascript
复制
let printInfo = NSPrintInfo.shared
let manager = FileManager.default
do{
    let directoryURL = try manager.url(for: .documentDirectory, in:.userDomainMask, appropriateFor:nil, create:true)
    let docURL = NSURL(string:"XX.pdf", relativeTo:directoryURL)

    let pdfDoc =  PDFDocument.init(url: docURL! as URL)

    let page = CGRect(x: 0, y: 0, width: 595.2, height: 1841.8) // A4, 72 dpi

    let pdfView : PDFView = PDFView.init(frame: page)

    pdfView.document = pdfDoc

    let operation: NSPrintOperation = NSPrintOperation(view: pdfView, printInfo: printInfo)
    operation.printPanel.options.insert(NSPrintPanel.Options.showsPaperSize)
    operation.printPanel.options.insert(NSPrintPanel.Options.showsOrientation)

    operation.run()
}catch{

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44580419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档