【发布时间】:2011-05-17 21:13:12
【问题描述】:
我想从应用程序中禁用长触摸。我无法控制在 WebView 上加载的 HTML。
【问题讨论】:
标签: uiwebview uiwindow uiwebviewdelegate
我想从应用程序中禁用长触摸。我无法控制在 WebView 上加载的 HTML。
【问题讨论】:
标签: uiwebview uiwindow uiwebviewdelegate
不再支持 UIWebView。因此,您应该实现 WKWebView,并且有一个名为 allowsLinkPreview 的属性,您可以使用它启用或禁用长触摸预览。
webView.allowsLinkPreview = false
【讨论】:
在 Interface Builder 中打开您的视图,单击 Web 视图,然后在属性检查器中取消选中“启用用户交互”复选框。
如果您想在代码中执行此操作,请将 Web 视图的 userInteractionEnabled 属性设置为 NO。
【讨论】:
在webViewDidFinishLoad delegate 中,我在加载的 html 页面上运行了一个禁用长触摸的 javascript。
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none'; document.body.style.KhtmlUserSelect='none'"];
【讨论】:
[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"]; 用于 Objective-C 或 webView.stringByEvaluatingJavaScript(from: "document.documentElement.style.webkitUserSelect='none';") 用于 Swift
您可以尝试从视图控制器覆盖以下方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
通过这种方式,您可以用自己的实现替换通常的触摸管理。
【讨论】: