Cómo utilizar el método shouldStartLoadWithRequest de UIWebView Delegate

Necesito eliminar los hyperlinks de la URL que se muestra en UIWebView y he examinado esta pregunta: Eliminación de hyperlinks de una URL mostrada en UIWebView .

Sé que necesito usar este método:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

Pero todavía tengo algunos problemas.

En primer lugar, ¿cómo evito solo ciertos enlaces (por ejemplo: www.google.com).

A continuación, ¿cómo evito todos los enlaces en mi UIWebView?

Mi código se ve así:

 [webUI loadHTMLString:[strDescription stringByDecodingHTMLEntities] baseURL:nil]; webUI.dataDetectorTypes = UIDataDetectorTypeNone; - (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"finish loading"); [webUI stringByEvaluatingJavaScriptFromString:@"document.styleSheets[0].addRule(\".active\", \"pointer-events: none;\");document.styleSheets[0].addRule(\".active\", \"cursor: default;\")"]; } - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { return YES; } 

Necesita alguna guía. Gracias..

La secuencia HTML se ve así:

 > <div style="font-family: Helvetica"><div style="color: #FFFFFF;"><div > style="font-family: Helvetica;"><p><span style="font-size: > 24px;"><strong>Optimal Performance Always</strong></span><span > style="font-size: 18px;"><br /></span></p><p><span style="font-size: > 18px;">The standard servicing package<a > href="http://www.google.com">www.google.com</a></div> 

Si desea deshabilitar todos los enlaces después de cargar la primera página, puede agregar una propiedad para almacenar si la página se cargó y usar su valor en webView: shouldStartLoadWithRequest:

 @property(nonatomic) BOOL pageLoaded; // initially NO - (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"finish loading"); [webUI stringByEvaluatingJavaScriptFromString:@"document.styleSheets[0].addRule(\".active\", \"pointer-events: none;\");document.styleSheets[0].addRule(\".active\", \"cursor: default;\")"]; // after all your stuff self.pageLoaded = YES; } - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { return ! self.pageLoaded; } 

Tenga en count que esto no oculta los enlaces, solo hace que la vista web no los cargue.

Además, puede verificar request.URL en webView: shouldStartLoadWithRequest: tipo de navigation: para cargar solo ciertas páginas. Otra forma sería verificar el valor del tipo de navigation:

 enum { UIWebViewNavigationTypeLinkClicked, UIWebViewNavigationTypeFormSubmitted, UIWebViewNavigationTypeBackForward, UIWebViewNavigationTypeReload, UIWebViewNavigationTypeFormResubmitted, UIWebViewNavigationTypeOther };