当用Swift 3触摸时,在Webview中获取pdf的实际坐标

我已经成功地从URL加载PDF文件到Web视图。 我想获取触摸后的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:我是一个新手

user3783161,

首先,如果您不使用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文档。 我没有find答案,但你可以做一个简单的转换:

PDF Paper Size vs. WebView Size

由于PDF必须有这些信息(pdf可以是A4 / A3 / A5 / C1 /等)。