gpt4 book ai didi

ios - 如何使用 UIWebView Delegate 的 shouldStartLoadWithRequest 方法

转载 作者:可可西里 更新时间:2023-11-01 05:45:37 30 4
gpt4 key购买 nike

我需要从 UIWebView 中显示的 URL 中删除超链接,我查看了这个问题:Removing hyper links from a URL shown in UIWebView .

我知道我需要使用这个方法:

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

但是我好像还是有一些问题。

首先,我如何避免仅某些链接(例如:www.google.com)。

接下来,我如何避免我的 UIWebView 中的所有链接?

我的代码是这样的:

[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;
}

需要一些指导。谢谢..

HTML 字符串如下所示:

> <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>

最佳答案

如果您想在第一个页面加载后禁用所有链接,您可以添加一个属性来存储页面是否已加载并在 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;
}

请注意,这不会隐藏链接,它只会让 webview 不加载它们。

此外,您可以检查 webView:shouldStartLoadWithRequest:navigationType: 上的 request.URL 以仅加载某些页面。另一种方法是检查 navigationType 值:

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

关于ios - 如何使用 UIWebView Delegate 的 shouldStartLoadWithRequest 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15194126/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com