美文网首页
UIWebView禁用手势的几种办法

UIWebView禁用手势的几种办法

作者: HQQ_哈球球 | 来源:发表于2019-08-05 09:39 被阅读0次

    WebView 禁用长按手势

    UIWebView禁用长按手势

    1. 在UIWebViewDelegate 里修改
    - (void)webViewDidFinishLoad:(UIWebView *)webView{
        NSLog(@"webViewDidFinishLoad");
        
        [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"]; // 允许将none改text
        [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"];
    
    // JS修改字体
    [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='100%'"];
    }
    
    1. 在HTML文件里修改
    <script type="text/JavaScript">
    
        window.onload=function({
          document.documentElement.style.webkitTouchCallout='none';
    };
     </script>
    
    1. 有的网页代码比较特殊 用第一种方式 js代码是插入在<HTML></HTML>体中的,页面比较奇怪的时候不生效,用以下的方法 ,放在 网页加载完成后代理里面
    - (void)unTouchMethod {
        
        for (UIView *subView in self.webView.scrollView.subviews) {
            
            if ([subView isKindOfClass:NSClassFromString(@"UIWebBrowserView")]) {
                
                for (UIGestureRecognizer *ges in subView.gestureRecognizers) {
                    if ([ges isKindOfClass:[UILongPressGestureRecognizer class]]) {
                        [subView removeGestureRecognizer:ges];
                        return;
                    }
                }
            }
        }
    }
    
    
    1. 删除了长按手势后,发现有的页面还有一个长按类似全选的一个效果,
      又看了一遍view层级发现多了一个UIWebSelectionView xxx 的东西,
      发现手势响应期有个名字差不多的 _UITextSelectionForceGesture, 那么把他也干掉.
    NSLog(@"网页子控制器数组 %@",webView.subviews);
        NSLog(@"网页子scroll控制器数组 %@",webView.scrollView.subviews);
        NSLog(@"----------------\n\n-----------");
        NSLog(@"网页子scroll控制器手势 %@",webView.scrollView.gestureRecognizers);
        
        for (UIView *subView in webView.scrollView.subviews) {
            
            if ([subView isKindOfClass:NSClassFromString(@"UIWebBrowserView")]) {
                NSLog(@"网页browser控制器手势 %@",subView.gestureRecognizers);
                for (UIGestureRecognizer *ges in subView.gestureRecognizers) {
                    if ([ges isKindOfClass:[UILongPressGestureRecognizer class]]||
                        [ges isKindOfClass:NSClassFromString(@"UITextSelectionForceGesture")]) {
                        [subView removeGestureRecognizer:ges];
                    }
                }
            }
            NSLog(@"删除后网页browser控制器手势 %@",subView.gestureRecognizers);
        }
    }
    

    OC复习/UI基础

    相关文章

      网友评论

          本文标题:UIWebView禁用手势的几种办法

          本文链接:https://www.haomeiwen.com/subject/uprpdctx.html