我有一个iOS应用程序,可以在其中显示html和pdf文件。我尝试实现自iOS14(find(_:configuration:completionHandler:)
(以来可用的页内查找功能。
这是我的实现:
private func searchInPage(forward: Bool) {
ktWebView.select(nil)
searchIsAtTop = false
searchIsAtEnd = false
let searchConfig = WKFindConfiguration()
searchConfig.backwards = !forward
searchConfig.caseSensitive = false
searchConfig.wraps = false
ktWebView.find(searchString, configuration: searchConfig, completionHandler: { result in
// https://stackoverflow.com/questions/64193691/ios-wkwebview-findstring-not-selecting-and-scrolling
guard result.matchFound else {
if forward { searchIsAtEnd = true }
else { searchIsAtTop = true }
return
}
ktWebView.evaluateJavaScript("window.getSelection().getRangeAt(0).getBoundingClientRect().top") { offset, _ in
guard let offset = offset as? CGFloat else { return }
ktWebView.scrollView.scrollRectToVisible(
.init(x: 0, y: offset + ktWebView.scrollView.contentOffset.y,
width: 100, height: 100), animated: true)
}
})
}
每次调用该函数时,searchString的下一次出现将被突出显示并滚动到.
只要WKWebView内容的mime类型是text/html
,这就可以正常工作。当它是application/pdf
时,它不起作用。
有人能帮我找到在WKWebView中显示的pdf文档中查找字符串的解决方案吗?
谢谢,克莱门斯
我不知道如何处理这个问题。感谢您的帮助。
它适用于文本文件,可能需要从PDF中复制文本并将其呈现为text/string,找到了一些示例:可以';t从使用iOS Swift 创建的PDF中复制文本
我现在已经通过使用pdf文件的PDFView而不是WKWebView解决了这个问题。您可以在https://github.com/cs-LA/FindInPDF.
感谢你为解决这个问题所做的一切努力,克莱门斯
你确定你的PDF文件有文本吗,也许它是从文本转换成矢量的!