作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道有没有什么方法可以在不点击 url 的情况下检测 UIWebView
中的链接?例如,如果页面有 PDF
文件,则会自动获取其链接。我知道通过 webview 的委托(delegate)我可以像这样检测点击的 url:
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool
{
if navigationType == .linkClicked
{
print(request.url?.absoluteString)
}
return true
}
但是有什么方法可以在不点击的情况下检测链接吗?
最佳答案
您可以将 NSDataDetector 用于链接类型 NSTextCheckingResult.CheckingType.link
。您只需要下载您的 url 数据并从中获取所有链接匹配:
extension String {
var detectURLs: [URL] {
return (try? NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue))?
.matches(in: self, range: NSRange(location: 0, length: utf16.count))
.compactMap{ $0.url } ?? []
}
}
extension Data {
var string: String { return String(data: self, encoding: .utf8) ?? "" }
}
Playground 测试:
import UIKit
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
// add the extensions above here
URLSession.shared.dataTask(with: URL(string: "http://www.example.com/downloads/")!) { data, response, error in
guard let data = data, error == nil else { return }
let pdfs = data.string.detectURLs.filter{$0.pathExtension.lowercased() == "pdf"}
print(pdfs) // print(urls) // "[http://www.sample-videos.com/pdf/Sample-pdf-5mb.pdf]\n"
}.resume()
关于ios - 无需点击即可检测 UIWebView 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44437670/
这实际上是我问的问题的一部分here ,该问题没有得到答复,最终被标记为重复。 问题:我只需使用 @Autowired 注释即可使用 JavaMailSender。我没有通过任何配置类公开它。 @Co
我是一名优秀的程序员,十分优秀!