我有一个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
,此操作就可以正常工作。如果mime类型为application/pdf
,则无法工作。
有人能帮我找到一个解决方案,在一个PDF文档中找到一个字符串显示在一个WKWebView?
谢谢你,克莱门斯
我不知道如何处理这个问题。任何帮助都是感激不尽的。
3条答案
按热度按时间wztqucjr1#
它工作的文本文件,也许需要从PDF复制文本,并将其呈现为文本/字符串,找到一些例子:Can't copy text from PDF which created with iOS Swift
vjhs03f72#
我现在已经解决了这个问题,通过使用PDFView而不是WKWebView来处理pdf文件。
谢谢你帮我解决这个问题,克莱门斯
tct7dpnv3#
您确定您的PDF文件包含文本吗?可能是从文本转换为矢量!