为 UIWebView 拦截 UITapGestureRecognizer

Intercept UITapGestureRecognizer for UIWebView

我想知道如何拦截 UIWebView 上的点击事件。似乎正确的手势是 UITapGestureRecognizer,但我似乎无法获得正确的视图。我没能在 swift 中找到解决方案。我的层次结构是 View -> UIWebView。我的用例是部署一个网络应用程序,并有一些基于网络视图导航的自定义操作。例如,能够识别我想要投放插页式广告或显示 UINavigationBar 的导航事件。感谢您的帮助!

import UIKit

class ViewController: UIViewController {

   @IBOutlet var Webview: UIWebView!

   let URLPath = "http://www.example.com"

   func loadAddressURL(){

       let requestURL = NSURL(string: URLPath)
       let request = NSURLRequest(URL: requestURL!)
       Webview.loadRequest(request)

   }

   override func viewDidLoad() {
       super.viewDidLoad()

       loadAddressURL()
       NSLog("I'm getting going")        

       //NOT SURE IF YOU SHOULD DISABLE THIS OR NOT
       //Webview.userInteractionEnabled=false


       let tapRecognizer = UITapGestureRecognizer(target: self , action: "handleSingleTap:")
       NSLog("I'm past the tab recognizer!\(tapRecognizer)")

       tapRecognizer.numberOfTapsRequired = 1
       Webview.addGestureRecognizer(tapRecognizer)
   }

   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
       // Dispose of any resources that can be recreated.
   }

   func handleSingleTap(recognizer: UITapGestureRecognizer) {
       //
       NSLog("I made it here")
   }   

}

先设置Gesture Delegate并继承geture UIGestureRecognizerDelegate

tapRecognizer.delegate = self

并插入此委托

func gestureRecognizer(UIGestureRecognizer,  shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer) -> Bool 
{
    return true
}

试试这个也许会有帮助...