0

7.1 Deployment で新しい WebKit を実装できました。iOS8以降の端末では問題なく使用できています。ただし、デバイスが iOS8 を下回ると、初期化後も WKWebView が nil になります。Webkit をサイレントにしてプロジェクトに正常に追加し、デプロイメントが 7.1 であったとしても、OS が実際に iOS8 を下回ると、この WebKit は無効になります。 .

このエラーを確認して続行します。この Webkit は、Swift および iOS8 のリリースで導入されたためです。ありがとう

4

1 に答える 1

0

これは、新しいプロトコルを作成し、同じプロトコルから 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"))

  }

}
于 2014-10-11T11:57:44.303 に答える