gpt4 book ai didi

ios - 如何将 "Open in.."函数添加到自定义 UIWebview?

转载 作者:行者123 更新时间:2023-11-28 08:39:30 25 4
gpt4 key购买 nike

我正在尝试使用 UIwebview 使用 UIDocumentInteractionController() 创建“打开方式...”功能。

我的目标是让用户能够浏览网站并按下“打开方式...”按钮将 PDF/DOCX 从网站推送到另一个应用程序,例如 Noteability。

我在我的代码中尝试做的是下载用户当前所在的页面,然后尝试在 UIDocumentInteractionController() 中打开该文件以推送到另一个应用程序。

它似乎不起作用,我需要帮助弄清楚我必须做什么。

这是我正在使用的代码。

    class DetailViewController: UIViewController, UIWebViewDelegate, UITextFieldDelegate, UIPopoverPresentationControllerDelegate, SFSafariViewControllerDelegate {
@IBOutlet weak var WebSiteView: UIWebView!
...

var docController: UIDocumentInteractionController!

...

@IBAction func OpenInPressed(sender: AnyObject) {
let yourURL = WebSiteView.request?.URL!
let urlRequest = NSURLRequest(URL: yourURL!)

let theData = try? NSURLConnection.sendSynchronousRequest(urlRequest, returningResponse: nil)



var docURL = (NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)).last!

docURL = docURL.URLByAppendingPathComponent( "myFileName.pdf")

theData?.writeToURL(docURL, atomically: true)

docController = UIDocumentInteractionController(URL: docURL)

docController.presentOptionsMenuFromRect(sender.frame, inView:self.view, animated:true)


}


}

最佳答案

这就是我为解决问题所做的。

您首先需要安装 CocoaPods。幸运的是,CocoaPods 是基于 Ruby 构建的,它随所有最新版本的 Mac OS X 一起提供。自 OS X 10.7 以来就是这种情况。

终端类型

sudo gem install cocoapods

然后在终端中输入这个命令来完成设置:

pod setup --verbose

打开终端并使用 cd 命令导航到包含您的项目的目录:

cd ~/Path/To/Folder/Containing/project

接下来,输入这个命令:

pod init

这会为您的项目创建一个 Podfile。现在我们必须添加 AlamoFire。 (Alamofire 是适用于 iOS 和 Mac OS X 的基于 Swift 的 HTTP 网络库。)我们将使用它来下载文件。

键入此命令以使用 Xcode 打开 Podfile 进行编辑:

open -a Xcode Podfile

然后将 Podfile 的顶行替换为:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

那么你也应该做这个改变:

target 'Project' do

pod 'Alamofire', '~> 3.3'

end

将 Alamofire 添加到您的项目中。

完成后保存并关闭 Podfile。返回终端并输入:

pod install

如果 Xcode 项目已打开,请立即将其关闭并打开 project.xcworkspace。您将不得不打开 .xcworkspace,否则您的项目将无法按预期运行。接下来,您导航到 .swift 文件,其中包含您尝试打开“打开方式...”按钮的 Web View 。并在顶部添加:

import Alamofire

这会给你一个错误,忽略它,当你运行你的项目时,它会自行安装并修复错误。接下来转到您的@IBAction func 在其中添加:

 @IBAction func OpenInPressed(sender: AnyObject) {
var localPath: NSURL?
Alamofire.download(.GET,
(WebSiteView.request?.URL?.absoluteString)!,
destination: { (temporaryURL, response) in
let directoryURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let pathComponent = response.suggestedFilename

localPath = directoryURL.URLByAppendingPathComponent(pathComponent!)
return localPath!
})
.response { (request, response, _, error) in
if localPath != nil{
self.docController = UIDocumentInteractionController(URL: localPath!)

self.docController.presentOptionsMenuFromBarButtonItem(sender as! UIBarButtonItem, animated: true)

}
}
}

这将使您现在可以获得 pdf/docx 或您可以在网站上查看的任何文件,并将其推送到另一个应用程序。如果您想使用按钮而不是 BarButtonItem 只需将 .presentOptionsMenuFromBarButtonItem 切换为 .presentOptionsMenuFromRect 然后将 sender 更改为! UIBarButtonItemsender.frame

关于ios - 如何将 "Open in.."函数添加到自定义 UIWebview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36749902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com