热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

wkwebview文件服务器,WKWebView无法在iOS8下加载本地文件

他们终于解决了这个错误!现在我们可以使用了-[WKWebViewloadFileURL:allowingReadAccessToURL:]。显然,这个修

他们终于解决了这个错误!现在我们可以使用了-[WKWebView loadFileURL:allowingReadAccessToURL:]。显然,这个修复在WWDC 2015视频中值得花几秒钟。介绍Safari View Controller

适用于iOS8~iOS10(Swift 3)

正如Dan Fabulish的回答所说,这是WKWebView的一个错误,显然很快就没有解决,因为他说有一个解决办法:)

解决方法是包含20行代码,包含错误处理和注释,不需要服务器:)func fileURLForBuggyWKWebView8(fileURL: URL) throws -> URL {

// Some safety checks    if !fileURL.isFileURL {

throw NSError(

domain: "BuggyWKWebViewDomain",

code: 1001,

userInfo: [NSLocalizedDescriptionKey: NSLocalizedString("URL must be a file URL.", comment:"")])

}

try! fileURL.checkResourceIsReachable()

// Create "/temp/www" directory    let fm = FileManager.default

let tmpDirURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("www")

try! fm.createDirectory(at: tmpDirURL, withIntermediateDirectories: true, attributes: nil)

// Now copy given file to the temp directory    let dstURL = tmpDirURL.appendingPathComponent(fileURL.lastPathComponent)

let _ = try? fm.removeItem(at: dstURL)

try! fm.copyItem(at: fileURL, to: dstURL)

// Files in "/temp/www" load flawlesly :)    return dstURL}

并可用作:override func viewDidLoad() {

super.viewDidLoad()

var fileURL = URL(fileURLWithPath: Bundle.main.path(forResource:"file", ofType: "pdf")!)

if #available(iOS 9.0, *) {

// iOS9 and above. One year later things are OK.        webView.loadFileURL(fileURL, allowingReadAccessTo: fileURL)

} else {

// iOS8. Things can (sometimes) be workaround-ed        //   Brave people can do just this        //   fileURL = try! pathForBuggyWKWebView8(fileURL: fileURL)        //   webView.load(URLRequest(url: fileURL))        do {

fileURL = try fileURLForBuggyWKWebView8(fileURL: fileURL)

webView.load(URLRequest(url: fileURL))

} catch let error as NSError {

print("Error: " + error.debugDescription)

}

}}



推荐阅读
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文介绍了Python字典视图对象的示例和用法。通过对示例代码的解释,展示了字典视图对象的基本操作和特点。字典视图对象可以通过迭代或转换为列表来获取字典的键或值。同时,字典视图对象也是动态的,可以反映字典的变化。通过学习字典视图对象的用法,可以更好地理解和处理字典数据。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • python是一门简单灵动的语言。从今天开始我要每天都做笔记,每天都要写博客记录我所想,我所学到的。笔记提纲:1,pyt ... [详细]
  • 设计完成后,将所完成的作品交由老师检查。管理进程接收申请进入的信号,在消息队列中取下申请进入队列的用户进程的信息,针对当前临界区状态,写一个回馈信息 ... [详细]
  • UIView的通用动画letviewUIView(frame:CGRectMake(10.0,10.0,100.0,40.0))self.view.addSubview(vie ... [详细]
  • swift中的uitable
    下面是一个静态的tableview于图可知有两个section头是11..和22..,其中222是一个tableviewcell!并且从图可知道样式是leftD ... [详细]
author-avatar
手机用户2502875355
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有