2012-12-03 217 views
0

我的目標是允許UIWebView加載初始鏈接,但不允許任何進一步的導航。禁用UIWebView超鏈接

我看到的問題:從界面生成器

Disable hyperlinks in UIWebView

所以,我有線引用web視圖屬性。

我指定我的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仍會繼續並加載新頁面。

我看到iPhone模擬器6.0

這個問題,我怎樣才能解決這個問題?

+2

你確定委託方法被調用嗎? – mkral

+0

是的。我在其中放置了一個斷點,並看到它被擊中(初始頁面加載和點擊鏈接之後) –

+0

如果你只是把'return NO;'放到所有文件中,它仍然會加載嗎? – mkral

回答

0

下面是我在評論中寫道同樣的事情:

我想我找到了問題的原因。我不知道如何正確地調用它(不是HTML和Javascript的大專家)。但是,該鏈接具有以下代碼:"<a href="/something" data-transition="flip"</a>因此,調用了回調,但它看起來像忽略了此回調的結果。

因此,最有可能的解決方案是這裏:Remove hyperlinks in uiwebview

2

返回任何基於類型排除鏈接

回報(navigationTpe == UIWebViewNavigationTypeLinkClicked)!;

+0

謝謝。這會簡化我的代碼。但是,它並沒有解決主要問題。即使我從shouldStartLoadWithRequest返回NO/FALSE UIWebView仍然加載第二頁。 –

+0

有沒有網頁瀏覽? –

0

是否有可能你的布爾值以某種方式得到重置?如果你只爲(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType返回NO,會發生什麼?

+0

他說沒有幫助:( –