有没有办法在网页浏览中禁用互动? 那么用户不能再去加载的webview了吗?
编辑: 禁用UserInteractions不是解决方案,因为网站仍然必须可滚动。
答案 0 :(得分:3)
实施WKNavigationDelegate
协议:
@interface ViewController () <WKNavigationDelegate>
设置WKWebView
的{{1}}媒体资源:
navigationDelegate
然后实施您要限制的URL的策略:
self.wkWebView.navigationDelegate = self;
答案 1 :(得分:1)
这些javascript行将通过覆盖HTML来禁用长按和链接触摸。基于框架的内容(如嵌入式YouTube视频)仍可正常使用。
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("document.documentElement.style.webkitUserSelect='none'")
webView.evaluateJavaScript("document.documentElement.style.webkitTouchCallout='none'")
webView.evaluateJavaScript("var elems = document.getElementsByTagName('a'); for (var i = 0; i < elems.length; i++) { elems[i]['href'] = 'javascript:(void)'; }")
}
答案 2 :(得分:0)
您可以按照以下方式执行此操作。
//-----------------------------------------------------------------------
#pragma mark - UIWebView Methods
//-----------------------------------------------------------------------
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
return YES;
}
//----------------------------------------------------------------
- (void)webViewDidStartLoad:(UIWebView *)webView {
//disable user interaction
}
//----------------------------------------------------------------
- (void)webViewDidFinishLoad:(UIWebView *)webView{
//enable user interaction
}
//----------------------------------------------------------------
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
//enable user interaction
}
答案 3 :(得分:0)
WKNavigationDelegate
解决方案仅阻止用户关注链接。我还具有一些要防止与之交互的表单控件,同时仍然允许滚动页面。最终我发现可以通过禁用Web视图的滚动视图的子视图来实现:
快速
self.webView.scrollView.subviews.forEach { $0.isUserInteractionEnabled = false }
Objective-C
for (UIView *subview in self.webView.scrollView.subviews)
{
subview.userInteractionEnabled = NO;
}