禁用UIWebView中的链接?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了禁用UIWebView中的链接?相关的知识,希望对你有一定的参考价值。

我正在将一些内容从网络加载到UIWebView,但我希望在UIWebView中禁用所有链接。这可能吗?我可以解析文本,但我正在寻找更容易的东西。

答案

您可以给UIWebView一个delegate并将-webView:shouldStartLoadWithRequest:navigationType:委托方法实现到return NO;(初始加载除外)。

这将阻止用户查看除该单页之外的任何内容。

提供评论中要求的示例...从allowLoad=YES开始,然后:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
    return allowLoad;
}

- (void)webViewDidFinishLoad:(UIWebView*)webView {
    allowLoad = NO;
}
另一答案

在Swift 4.0中测试:这种方法不需要额外的变量来测试这是否是初始加载。只需检查请求的类型(在本例中为LinkClicked),并在这种情况下返回false。否则只需返回true!

(当然要确保你设置webView.delegate

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    if navigationType == .linkClicked {
        return false
    }
    return true
}
另一答案

您可以从Webview禁用数据检测。

[webView setDataDetectorTypes:UIDataDetectorTypeNone];
另一答案

对于swift 3:

尝试从webView.dataDetectorTypes中删除您不希望显示为链接的类型

webView.dataDetectorTypes.remove(UIDataDetectorTypes.all)
另一答案

简单的答案适用于Swift 2.0:

yourWebView.dataDetectorTypes = UIDataDetectorTypes.None

只需在您定义和使用Web视图的视图控制器中实现它,它就能完美运行。

另一答案

我有类似的需求,在某些情况下只使用webViewDidFinishLoad是不够的,所以我使用webViewDidStartLoad来涵盖所有情况:

func webViewDidStartLoad(webView: UIWebView) {
    startedLoading = true
}

func webViewDidFinishLoad(webView: UIWebView) {
    alreadyOpen = true
}

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    if startedLoading && alreadyOpen {
        // do something
        return false
    }else if startedLoading && !alreadyOpen{
        return false
    }else if !startedLoading {
        return true
    }
    return true
}

在某些情况下,当加载html时,但是某些资源(如图像和DOM内部的一些重要资源)并未触发didFinishLoad方法,用户可以在此“短”间隔内导航。

另一答案

Swift 3.0的另一个答案: 只要给出零,不要检测yourWebView初始代码的任何类型链接

yourWebView.dataDetectorTypes =  UIDataDetectorTypes(rawValue: 0)

以上是关于禁用UIWebView中的链接?的主要内容,如果未能解决你的问题,请参考以下文章

禁用放大 UIWebView 但保留其他用户交互

如何禁用 UIWebview 中的放大镜?

代码片段使用复杂的 JavaScript 在 UIWebView 中插入 HTML?

Swift - 在 WebView 中禁用链接

调整 UIWebView 框架大小时如何禁用 UIWebView 调整内容大小

快速禁用 UIwebView textField 中的键盘