UIWebView禁用手势的几种办法

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基础

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • IOS之UIWebView的使用 刚接触IOS开发1年多,现在对于 混合式 移动端开发越来越流行,因为开发成本上、...
    学无止境666阅读 45,950评论 5 53
  • OS之UIWebView的使用 刚接触IOS开发1年多,现在对于 混合式 移动端开发越来越流行,因为开发成本上、速...
    知之未道阅读 5,557评论 0 4
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,805评论 1 32
  • 今天是在博览会中心负责讲解《智慧衣帽间》场景,在现场给观众讲解解答了,拉萨帝融合洗衣机的智慧点和高端点,以及智慧衣...
    0e535bd706a2阅读 1,274评论 0 0
  • 少年不知愁滋味,上学不知为谁读。 过了青春入社会,渐知书中藏黄金。 不惑之际才清醒,夜伴埋头掐字根。 天命降临强笑...
    冲天农锄草阅读 4,028评论 30 117