WebView 禁用长按手势
UIWebView禁用长按手势
- 在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%'"];
}
- 在HTML文件里修改
<script type="text/JavaScript">
window.onload=function({
document.documentElement.style.webkitTouchCallout='none';
};
</script>
- 有的网页代码比较特殊 用第一种方式 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;
}
}
}
}
}
- 删除了长按手势后,发现有的页面还有一个长按类似全选的一个效果,
又看了一遍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基础
网友评论