Victor Ronin
Victor Ronin

Reputation: 23268

Disable UIWebView hyperlinks

My goal is to allow UIWebView load initial link, but disallow any further navigation.

I saw question:

Disable hyperlinks in UIWebView

So, I wired referenced webView property from interface builder.

I specified that my UIViewController uses UIWebViewDelegate:

@interface LegalViewController : UIViewController<UIWebViewDelegate>

In the code, on viewDidLoad, I do following:

 mFirstLoad = TRUE;
 webView.delegate = self;

And I have following code:

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

    mFirstLoad = FALSE;
    return TRUE;
}

shouldStartLoadWithRequest is called both initial call and when I click on the link. However, even if shouldStartLoadWithRequest returns FALSE, UIWebView still proceeds and loads a new page.

I see this problem on iOS Simulator 6.0

How can I fix this behavior?

Upvotes: 0

Views: 2552

Answers (3)

Victor Ronin
Victor Ronin

Reputation: 23268

Here is the same thing which I wrote in comments:

I think I found the reason for the problem. I am not sure how to properly call it (not a big expert on HTML and Javascript). However the link has following code : "<a href="/something" data-transition="flip"</a> As result, callback is called, but it looks like results of this callback is ignored.

As result most likely solution is here: Remove hyperlinks in uiwebview

Upvotes: 0

Stakenborg
Stakenborg

Reputation: 2930

Is it possible your boolean is getting reset somehow? What happens if you just return NO for (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType?

Upvotes: 0

Daij-Djan
Daij-Djan

Reputation: 50089

return NO based on type to exclude links

return !(navigationTpe==UIWebViewNavigationTypeLinkClicked);

Upvotes: 2

Related Questions