我能够在 7.1 部署中实现新的 WebKit。我可以在运行 iOS8 的设备上正常使用它。但是,当设备低于 iOS8 时,即使在初始化之后,我的 WKWebView 也会变为 nil,我的怀疑是即使您使 webkit 静音并成功将其添加到您的项目中并且部署为 7.1,如果操作系统实际上低于 iOS8,则此 WebKit 变得无效.
我想确认这个错误,以便继续。由于这个 webkit 是在 swift 和 iOS8 版本中引入的。谢谢
这是一个简单的示例,我创建了一个新协议并从同一协议扩展 UIWebView 和 WKWebView。有了这个,可以很容易地在我的视图控制器中跟踪这两个视图,并且这两个视图都使用通用方法从 url 加载,这使得抽象变得容易。
protocol MyWebView{
func loadRequestFromUrl(url: NSURL!)
}
extension UIWebView:MyWebView{
func loadRequestFromUrl(url: NSURL!){
let urlRequest = NSURLRequest(URL: url)
loadRequest(urlRequest)
}
}
extension WKWebView:MyWebView{
func loadRequestFromUrl(url: NSURL!){
let urlRequest = NSURLRequest(URL: url)
loadRequest(urlRequest)
}
}
// This is a simple closure, which takes the compared system version, the comparison test success block and failure block
let SYSTEM_VERSION_GREATER_THAN_OR_EQUAL: (String, () -> (), () -> ()) -> Void = {
(var passedVersion: String, onTestPass: () -> (), onTestFail: () -> ()) in
let device = UIDevice.currentDevice()
let version = device.systemVersion
let comparisonOptions = version.compare(passedVersion, options: NSStringCompareOptions.NumericSearch, range: Range(start: version.startIndex, end: version.endIndex), locale: nil)
if comparisonOptions == NSComparisonResult.OrderedAscending || comparisonOptions == NSComparisonResult.OrderedSame{
onTestPass()
}else{
onTestFail()
}
}
class ViewController: UIViewController{
var webView: MyWebView!
override func viewDidLoad() {
super.viewDidLoad()
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL("8.0",
{
let theWebView = WKWebView(frame: self.view.bounds)
self.view.addSubview(theWebView)
self.webView = theWebView
},
{
let theWebView = UIWebView(frame: self.view.bounds)
self.view.addSubview(theWebView)
self.webView = theWebView
})
webView.loadRequestFromUrl(NSURL(string: "http://google.com"))
}
}