Swift3 webview isUserInteractionEnabled 不起作用
Posted
技术标签:
【中文标题】Swift3 webview isUserInteractionEnabled 不起作用【英文标题】:Swift3 webview isUserInteractionEnabled not working 【发布时间】: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.
【问题讨论】:
您的代码对我有用。我可以向下滚动,但点击任何链接都不起作用。 【参考方案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/等单独的资源,因此网页在渲染后可能看起来“损坏”
【讨论】:
以上是关于Swift3 webview isUserInteractionEnabled 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Swift 3 触摸时在 Webview 中获取 pdf 的实际坐标
wkwebview ios 10在重新创建webview后停止使用localfileurl加载文件