UIDocumentInteractionController显示空白pdf
我试图使用UIDocumentInteractionController presentPreviewAnimated方法在iOS设备上显示PDF,但它始终显示一个空白文档。 我认为这可能与字符编码有关,但我不确定。 如果我使用一个UIWebView,我可以得到PDF显示,而不是与文档交互控制器。
//更新9/18/14现在正在与Xcode 6的GM版本合作。
/ /更新8/22/14
奇怪的是,从DocumentInteractionController,如果我点击右上angular的“打开”图标,并select类似iBooks,PDF显示正确。 看起来好像它只是不想在屏幕上显示它的预览。
这是我的代码(在Swift中):
// data is coming in as NSISOLatin1StringEncoding func displayPdfInUIDocumentInteractionController(data: NSData) { let fileName = NSTemporaryDirectory().stringByAppendingPathComponent("myFile.pdf") let url: NSURL! = NSURL(fileURLWithPath: fileName) // this does not seem to make a difference // let pdfString = NSString(data: data, encoding: NSISOLatin1StringEncoding) // pdfString.writeToURL(url!, atomically: true, encoding: NSISOLatin1StringEncoding, error: nil) data.writeToURL(url, atomically: true) if url != nil { let docController = UIDocumentInteractionController(URL: url) docController.UTI = "com.adobe.pdf" docController.delegate = self docController.presentPreviewAnimated(true) } }
此代码确实显示PDF:
// data is coming in as NSISOLatin1StringEncoding func displayPdfInUIWebView(data: NSData) { let rect = UIScreen.mainScreen().bounds let screenSize = rect.size let webView = UIWebView(frame: CGRectMake(0,0,screenSize.width,screenSize.height)) webView.autoresizesSubviews = true webView.autoresizingMask = (UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth) webView.loadData(data, MIMETYype: "application/pdf", textEncodingName: "ISO-8859-1", baseUrl: nil) self.view.addSubview(webView) }
第一个function不应该有什么原因吗? 它不会出错,只是显示一个空白页面。
我没有使用Swift,但是直接使用Objective-C的问题基本上是一样的。 在iOS8之前,我的UIDocumentInteractionController显示了几乎所有的文件types,包括PDF。 但在iOS8中,PDF文件将不再显示给我。
我是这样创build的:
[[[UIDocumentInteractionController alloc] init] autorelease]
我改变了电话来创build它像这样:
[UIDocumentInteractionController interactionControllerWithURL:myUrl]
现在我的PDF文件再次显示(其他人似乎也没关系)。
这与Xcode的GM发行版一起工作。 猜猜这只是一个错误。