美文网首页
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