如何完全禁用UIWebView iOS9的放大镜

时间:2015-09-21 04:29:18

标签: ios css objective-c uiwebview ios9

我尝试过以下方法:

html, body, div, p, a, table, img
{
-webkit-user-select: none !important;
user-select: none !important;
-webkit-user-callout: none !important;
-webkit-touch-callout: none !important;
}

这适用于占据整个屏幕的uiwebview,但对于我没有的uiwebview(上面的adbannerview),它将uiwebview上方的放大镜推到了adbannerview上。

是否有人提出任何想法都不会导致UILongPressGestureRecognizers在uiwebview的子视图中停用answer

2 个答案:

答案 0 :(得分:6)

我设法通过确保在每次加载页面后禁用手势来获得建议的评论。

所以,在你的webview委托中:

func webViewDidFinishLoad(webView: UIWebView) {
    disableLongPressGesturesForView(webView)
}

然后,您的函数可以查找webview的每个子视图(以及它的子视图子项),并禁用任何长按手势。

func disableLongPressGesturesForView(view: UIView) {
    for subview in view.subviews {
        if let gestures = subview.gestureRecognizers as [UIGestureRecognizer]! {
            for gesture in gestures {
                if gesture is UILongPressGestureRecognizer {
                    gesture.enabled = false
                }
            }
        }
        disableLongPressGesturesForView(subview)
    }
}

答案 1 :(得分:2)

我通过迭代webview中的子视图并找到哪个具有UILongPressGestureRegonizer然后禁用它来禁用放大镜

以下是摘录:

- (void)disableWebViewLongPressGestures:(UIWebView *)webview {
    for(id subView in webview.subviews) {
        if([subView isKindOfClass:[UIScrollView class]]) {
            UIScrollView *scrollView = (UIScrollView *)subView;
            for(id ssView in scrollView.subviews) {
                if([NSStringFromClass([ssView class]) isEqualToString:@"UIWebBrowserView"]) {
                    for(UIGestureRecognizer *gs in [ssView gestureRecognizers]) {
                        if ([gs isKindOfClass:[UILongPressGestureRecognizer class]])
                        {
                            gs.enabled = NO;
                        }
                    }
                }
            }
        }
    }
}