【问题标题】:Swift3 webview isUserInteractionEnabled not workingSwift3 webview isUserInteractionEnabled 不起作用
【发布时间】:2017-06-14 15:57:15
【问题描述】:

我的目标是加载远程 html,替换标签并将其显示在 webview 中。一切正常,但 isUserInteractionEnabled = true 它不起作用。我知道这一点,因为我无法向下滚动。我认为这是关于在 session.dataTask() 中调用 self.webView.loadHTMLString(html!, baseURL: nil)。我的问题是:有没有更好的方法来实现这一点?

   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.
   }
   }

【问题讨论】:

  • 您的代码对我有用。我可以向下滚动,但点击任何链接都不起作用。

标签: ios swift webview swift3 uiwebview


【解决方案1】:

你应该使用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

你也不应该在UIWebView上设置isUserInteractionEnabled,因为它是它的默认值(检查storyboard/xib,当你拖动UIWebView类型的对象时应该已经勾选了)

但请注意,以这种方式加载网页会导致其他问题,因为不会下载图像/css/等单独的资源,因此网页在渲染后可能看起来“损坏”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 2023-03-30
    • 2012-10-15
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多