【问题标题】:Disable UIWebView hyperlinks禁用 UIWebView 超链接
【发布时间】:2012-12-03 23:27:04
【问题描述】:

我的目标是允许 UIWebView 加载初始链接,但不允许任何进一步的导航。

我看到了问题:

Disable hyperlinks in UIWebView

所以,我从界面生成器中连接了引用的 webView 属性。

我指定我的 UIViewController 使用 UIWebViewDelegate:

@interface LegalViewController : UIViewController<UIWebViewDelegate>

在代码中,在 viewDidLoad 上,我执行以下操作:

 mFirstLoad = TRUE;
 webView.delegate = self;

我有以下代码:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if (!mFirstLoad)
        return FALSE;

    mFirstLoad = FALSE;
    return TRUE;
}

shouldStartLoadWithRequest 在初始调用和单击链接时都被调用。但是,即使 shouldStartLoadWithRequest 返回 FALSE,UIWebView 仍会继续并加载新页面。

我在 iOS Simulator 6.0 上看到了这个问题

如何解决此问题?

【问题讨论】:

  • 您确定正在调用委托方法吗?
  • 是的。我在里面放了一个断点,发现它被命中了(初始页面加载和点击链接后)
  • 如果您只是将return NO; 全部放入,它还会加载吗?
  • 如果我只返回 NO 那么它不会加载初始页面。
  • 我想我找到了问题的原因。我不确定如何正确调用它(不是 HTML 和 Javascript 方面的大专家)。但是链接有以下代码:“Something" 结果,回调被调用,但看起来这个回调的结果被忽略了。跨度>

标签: ios


【解决方案1】:

根据类型返回 NO 以排除链接

return !(navigationTpe==UIWebViewNavigationTypeLinkClicked);

【讨论】:

  • 谢谢。这将简化我的代码。但是,它并没有解决主要问题。即使我从 shouldStartLoadWithRequest UIWebView 返回 NO/FALSE 仍然会加载第二页。
【解决方案2】:

您的布尔值是否可能以某种方式重置?如果您只为 (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 返回 NO,会发生什么情况?

【讨论】:

    【解决方案3】:

    这是我在 cmets 中写的相同内容:

    我想我找到了问题的原因。我不确定如何正确调用它(不是 HTML 和 Javascript 方面的大专家)。但是链接有以下代码:"&lt;a href="/something" data-transition="flip"&lt;/a&gt; 结果,回调被调用,但看起来这个回调的结果被忽略了。

    因此最有可能的解决方案在这里:Remove hyperlinks in uiwebview

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多