2017-06-14 72 views
0

我的目標是加載一個遠程html,替換標籤並在webview中顯示它。一切工作正常,但isUserInteractionEnabled = true它不工作。我知道這是因爲我不能向下滾動。我認爲這是關於在session.dataTask()內調用self.webView.loadHTMLString(html!,baseURL:nil)。我的問題是:有沒有更好的方法來實現這一目標?Swift3 webview isUserInteractionEnabled不能正常工作

import UIKit 

    class ViewController: UIViewController { 

    @IBOutlet weak var webView: UIWebView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let url = "https://example.com" 
     let requestURL = URL(string:url) 
     var request = URLRequest(url: requestURL!) 

     request.httpMethod = "GET" 
     let session = URLSession.shared 

     self.webView.isUserInteractionEnabled = true 

     session.dataTask(with: request) { (data, response, err) in 
      let html = String(data: data!, encoding: String.Encoding.utf8) as String! 
      self.webView.loadHTMLString(html!, baseURL: nil) 
     }.resume() 

     // webView.loadRequest(request) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    } 
+0

您的代碼正在爲我工​​作。我可以向下滾動,但在任何鏈接點擊都不起作用。 –

回答

0

您應該使用 UIWebView的API來加載請求,而不是 URLSession

override func viewDidLoad() { 
    super.viewDidLoad() 

    let url = "https://www.google.com" 
    let requestURL = URL(string:url) 
    let request = URLRequest(url: requestURL!) 

    webView.loadRequest(request) 
} 

編輯我還以爲你只是想顯示該網頁。我相信爲了改變你使用URLSession下載的html然後渲染它,你可能需要嘗試ascii編碼而不是uft8

你也應該沒有設置isUserInteractionEnabledUIWebView,因爲這是它的默認值(檢查storyboard/xib,它應該已經被選中,當你拖動UIWebView類型的對象)

但是要知道,加載網頁時方式會導致其他問題,因爲單獨的資源,如圖像/ CSS /等不會被下載,所以網頁可能看起來「破碎」後渲染