ios - 接触 Swift 3 时在 Webview 中获取 pdf 的实际坐标

标签 ios pdf webview swift3

我已成功将 pdf 文件从 URL 加载到 Web View 。我想在触摸 webview 后获取坐标,将其数据发送到服务器,以在服务器端的该位置添加一些文本。问题是当 webview 缩放或滚动到第 2,3 页时如何获取该坐标.. 你能帮我解决 Swift 3 中的问题

这里是代码

class ViewController: UIViewController, UITextFieldDelegate, UIGestureRecognizerDelegate, UIWebViewDelegate {

    @IBOutlet var imageView: UIImageView!
    @IBOutlet var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "http://www.pdf995.com/samples/pdf.pdf")!
        webView.loadRequest(URLRequest(url: url))

        let webViewTapped = UITapGestureRecognizer(target: self, action: #selector(self.tapAction(_:)))
        webViewTapped.numberOfTouchesRequired = 1
        webViewTapped.delegate = self
        webView.addGestureRecognizer(webViewTapped)
    }

    func tapAction(_ sender: UITapGestureRecognizer) {
        // This always return the same coordinates in zoom or not zoom
        let point = sender.location(in: webView)
        print("======")
        print("x: \(point.x) y: \(point.y)")
    }

PS:我是 swift 的新手

最佳答案

用户3783161,

首先,如果您不使用 UIGestureRecognizerDelegate 中的任何方法,则可以删除以下行。 webViewTapped.delegate = self

要在触摸 UIWebView 时获取实际坐标,您需要在 UIScrollView 上获取位置,而不是从 UIWebView 获取位置。

func tapAction(_ sender: UITapGestureRecognizer) {
    // This always return the same coordinates in zoom or not zoom
    // let point = sender.location(in: webView)
    // print("======WebView")
    // print("x: \(point.x) y: \(point.y)")

    // Get location frown webView.ScrollView
    let point = sender.location(in: webView.scrollView)
    print("======ScrollView")
    print("x: \(point.x) y: \(point.y)")
}

但是你仍然有一个问题,因为该位置是相对于 UIWebView 的内容大小而不是 PDF 文档。 我没有找到这个问题的答案,但你可以在以下之间进行简单的转换:

PDF 纸张大小与 WebView 大小

由于 PDF 必须包含此信息(pdf 可以是 A4/A3/A5/C1/等)。

关于ios - 接触 Swift 3 时在 Webview 中获取 pdf 的实际坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45072786/

相关文章:

iphone - 如何在xcode中拖放文件?

java - android webview显示空白页面

Android软键盘不平移 WebView

c++ - QTextDocument、QPdfWriter - 如何缩放输出

image - 使用 Ghostscript 将 PDF 转换为 JPG

.net - 是否有可以将 PNG 文件转换为 PDF 的 .NET 库?

android - 将 Android WebView 文本大小与 TextView 文本大小相匹配

ios - 修改 iOS IPA Assets 并退出(最好从 Windows)

ios - 如何为 ARKit 创建场景文件?

ios - 在 Swift 枚举期间从数组中删除?