iOS Swift UIWebView Link 坐标
iOS Swift UIWebView Link Coordinates
我需要获取在 UIWebView 中点击的 link 的坐标。我尝试使用 TapGestureRecognizer,但它不会在 link 被点击时触发。我以为我可以通过 stringByEvaluatingJavaScriptFromString 从 Javascript 获取坐标,但我也无法让它工作。我怎样才能做到这一点?
UIView hitTest 可能有用。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event ;
在您的 Web 视图中覆盖它(或使用类别)可能允许您处理 Web 视图包含的项目的点击坐标,这些项目不会被手势识别器传递给超级视图
一个 Swift 相当于这个答案:How to detect touch on UIWebView.
import UIKit
class ViewController: UIViewController, UIGestureRecognizerDelegate {
let myWebView = UIWebView()
override func viewDidLoad() {
super.viewDidLoad()
myWebView.frame = self.view.frame
self.view.addSubview(myWebView)
myWebView.loadRequest(NSURLRequest(URL: NSURL(string: "https://whosebug.com")!))
let webViewTapped = UITapGestureRecognizer(target: self, action: "tapAction:")
webViewTapped.numberOfTouchesRequired = 1
webViewTapped.delegate = self
myWebView.addGestureRecognizer(webViewTapped)
}
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
func tapAction(sender: UIGestureRecognizer) {
let point = sender.locationInView(self.view)
println(point.x)
println(point.y)
}
我需要获取在 UIWebView 中点击的 link 的坐标。我尝试使用 TapGestureRecognizer,但它不会在 link 被点击时触发。我以为我可以通过 stringByEvaluatingJavaScriptFromString 从 Javascript 获取坐标,但我也无法让它工作。我怎样才能做到这一点?
UIView hitTest 可能有用。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event ;
在您的 Web 视图中覆盖它(或使用类别)可能允许您处理 Web 视图包含的项目的点击坐标,这些项目不会被手势识别器传递给超级视图
一个 Swift 相当于这个答案:How to detect touch on UIWebView.
import UIKit
class ViewController: UIViewController, UIGestureRecognizerDelegate {
let myWebView = UIWebView()
override func viewDidLoad() {
super.viewDidLoad()
myWebView.frame = self.view.frame
self.view.addSubview(myWebView)
myWebView.loadRequest(NSURLRequest(URL: NSURL(string: "https://whosebug.com")!))
let webViewTapped = UITapGestureRecognizer(target: self, action: "tapAction:")
webViewTapped.numberOfTouchesRequired = 1
webViewTapped.delegate = self
myWebView.addGestureRecognizer(webViewTapped)
}
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
func tapAction(sender: UIGestureRecognizer) {
let point = sender.locationInView(self.view)
println(point.x)
println(point.y)
}