在子视图上获取touchesBegan(UIWebView)

时间:2012-03-01 21:01:03

标签: iphone objective-c ios uiwebview

我有一个UIWebView,它作为UIview中的子视图添加,我想检测何时触摸这个UIWebView但是touchesBegan只是不起作用。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

  1. 在您的代码中对UIWebView进行子类化,然后在您的类中实现touchesBegan。
  2. 将子类webview添加为UIView的子视图。
  3. 在子类UIWebView中调用super

    - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    {
        [super touchesBegan: touches withEvent: event];
    }
    

答案 1 :(得分:0)

子类化并等待touchesBegan不会帮助你,因为它不会被调用 我将UIWebView子类化,并且只是在2级深度的子​​视图中“吸收”到它的手势识别器上(你可以递归地去,但那足够iOS6-7)。 然后,您可以使用触摸位置和手势识别器的状态执行任何操作。

for (UIView* view in self.subviews) {
    for (UIGestureRecognizer* recognizer in view.gestureRecognizers) {
        [recognizer addTarget:self action:@selector(touchEvent:)];
    }
    for (UIView* sview in view.subviews) {
        for (UIGestureRecognizer* recognizer in sview.gestureRecognizers) {
            [recognizer addTarget:self action:@selector(touchEvent:)];
        }
    }
}

答案 2 :(得分:0)

雨燕5

subview.swift

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    super.touchesBegan(touches, with: event)
    self.next?.touchesBegan(touches, with: event)
}

如果不确定是否应致电super.touchesBegan(touches, with: event),请参阅文档discussion

superview.swift

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    // handle
}