Iphone 从UIWebView中显示的URL删除超链接
我正在制作一个应用程序,其中有一个最新的公司新闻部分。基本上,最初的计划是使用ASIHTTPRequest提取所有HTML,在其中搜索标签,然后提取新闻标题和描述的信息,然后在我的应用程序的滚动视图中将其显示为计划文本。然而,这被证明是一场噩梦,因为该网站没有显示信息的模式 此后,我决定在UIWebView中显示URL,以显示最新的公司新闻。我希望这是一个单页视图,这样我的用户就无法导航到网站的其他方面。是否可以阻止站点超链接显示为链接?我的UIWebView代码如下:Iphone 从UIWebView中显示的URL删除超链接,iphone,objective-c,ios4,uiwebview,Iphone,Objective C,Ios4,Uiwebview,我正在制作一个应用程序,其中有一个最新的公司新闻部分。基本上,最初的计划是使用ASIHTTPRequest提取所有HTML,在其中搜索标签,然后提取新闻标题和描述的信息,然后在我的应用程序的滚动视图中将其显示为计划文本。然而,这被证明是一场噩梦,因为该网站没有显示信息的模式 此后,我决定在UIWebView中显示URL,以显示最新的公司新闻。我希望这是一个单页视图,这样我的用户就无法导航到网站的其他方面。是否可以阻止站点超链接显示为链接?我的UIWebView代码如下: UIView *webN
UIView *webNewsView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view = webNewsView;
CGRect webFrame = [[UIScreen mainScreen] applicationFrame];
webFrame.origin.y = 0.0f;
webNews = [[UIWebView alloc] initWithFrame:webFrame];
webNews.backgroundColor = [UIColor clearColor];
webNews.scalesPageToFit = YES;
webNews.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
webNews.delegate = self;
[self.view addSubview: webNews];
[webNews loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://myURLHere"]]];
indicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
indicator.frame = CGRectMake(0.0, 0.0, 25.0, 25.0);
indicator.center = self.view.center;
[self.view addSubview: indicator];
任何帮助都将不胜感激。
谢谢
编辑:我还尝试添加以下内容
webNews.dataDetectorTypes = UIDataDetectorTypeNone;
这对链接的检测没有影响。确定,为dataDetectorTypes设置UIDataDetectorTypeNone应该会阻止webview检测链接,这是正确的 此外,使用
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
UIWebview委托,对于您不希望用户允许的URL,您可以简单地返回NO
此外,您可以在页面在中完成加载后插入自定义CSS规则
- (void)webViewDidFinishLoad:(UIWebView *)webView
委托方法,如下所示:
[MywebView stringByEvaluatingJavaScriptFromString:@"document.styleSheets[0].addRule(\"a.link\", \"color:#FF0000\")"];
因此,基于我提到的线程中的CSS,这应该是可行的:
[MywebView stringByEvaluatingJavaScriptFromString:@"document.styleSheets[0].addRule(\".active\", \"pointer-events: none;\");document.styleSheets[0].addRule(\".active\", \"cursor: default;\")"];
好的,为dataDetectorTypes设置UIDataDetectorTypeNone应该会阻止webview检测链接,这是正确的 此外,使用
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
UIWebview委托,对于您不希望用户允许的URL,您可以简单地返回NO
此外,您可以在页面在中完成加载后插入自定义CSS规则
- (void)webViewDidFinishLoad:(UIWebView *)webView
委托方法,如下所示:
[MywebView stringByEvaluatingJavaScriptFromString:@"document.styleSheets[0].addRule(\"a.link\", \"color:#FF0000\")"];
因此,基于我提到的线程中的CSS,这应该是可行的:
[MywebView stringByEvaluatingJavaScriptFromString:@"document.styleSheets[0].addRule(\".active\", \"pointer-events: none;\");document.styleSheets[0].addRule(\".active\", \"cursor: default;\")"];
这里还可以做一件事来进一步自定义web视图中的链接,即编辑传递到web视图中的html字符串。具体来说,您可以将CSS添加到html中,以确定链接的显示方式(颜色、下划线等)。下面是一段代码片段,它获取html字符串并使用CSS对其进行自定义:
NSString *HTML = [NSString stringWithFormat:@"<html>\n"
"<head>\n"
"<style type=\"text/css\">\n"
"body {font-family: \"%@\"; font-size: %@; color:#%@; background-color:#FFFFFF; margin: 0; padding: 0; line-height: 1.5; }\n"
"a:link {color:#00B0EA; text-decoration: none;}\n"
"</style>\n"
"</head>\n"
"<body><script type=\"text/javascript\">window.onload = function() { window.location.href = \"ready://\" + document.body.offsetHeight; } </script>%@</body>\n"
"</html>",
font.familyName, @(font.pointSize), colorHexString, htmlBodyString];
NSString*HTML=[nsstringwithformat:@“\n”
“\n”
“\n”
“正文{font-family:\“%@”字体大小:%@;颜色:\\%@;背景色:#FFFFFF;边距:0;填充:0;行高:1.5;}\n”
“a:链接{颜色:#00B0EA;文本装饰:无;}\n”
“\n”
“\n”
“window.onload=function(){window.location.href=\“ready://\”+document.body.offsetHeight;}%@\n”
"",
font.familyName、@(font.pointSize)、colorHexString、HtmlByString];
要在web视图中进一步自定义链接,还可以在此处编辑传递到web视图中的html字符串。具体来说,您可以将CSS添加到html中,以确定链接的显示方式(颜色、下划线等)。下面是一段代码片段,它获取html字符串并使用CSS对其进行自定义:
NSString *HTML = [NSString stringWithFormat:@"<html>\n"
"<head>\n"
"<style type=\"text/css\">\n"
"body {font-family: \"%@\"; font-size: %@; color:#%@; background-color:#FFFFFF; margin: 0; padding: 0; line-height: 1.5; }\n"
"a:link {color:#00B0EA; text-decoration: none;}\n"
"</style>\n"
"</head>\n"
"<body><script type=\"text/javascript\">window.onload = function() { window.location.href = \"ready://\" + document.body.offsetHeight; } </script>%@</body>\n"
"</html>",
font.familyName, @(font.pointSize), colorHexString, htmlBodyString];
NSString*HTML=[nsstringwithformat:@“\n”
“\n”
“\n”
“正文{font-family:\“%@”字体大小:%@;颜色:\\%@;背景色:#FFFFFF;边距:0;填充:0;行高:1.5;}\n”
“a:链接{颜色:#00B0EA;文本装饰:无;}\n”
“\n”
“\n”
“window.onload=function(){window.location.href=\“ready://\”+document.body.offsetHeight;}%@\n”
"",
font.familyName、@(font.pointSize)、colorHexString、HtmlByString];
奇怪的是,设置UIDataDetectorTypeNone没有什么不同。所有的链接仍然可以点击。即使通过interface builder取消选中该框也没有什么区别。今晚我将尝试你的最后一条建议,谢谢。你当然可以通过shouldStartLoadWithRequest代表禁用链接。至于禁止链接显示为链接,这取决于使用正确的CSS规则,基于我在上面示例中显示的方式。也许有更好的CSS方法,但是我在CSSI方面不是很好,我已经实现了[webNews stringByEvaluatingJavaScriptFromString:@“document.styleSheets[0].addRule(\'a.link\,\'color:\ FF0000\”);在-(void)webViewDidFinishLoad:(UIWebView*)webView委托方法中,它没有区别。所有的链接仍然是可点击的,我没说他们不会被点击!链接的颜色变为红色了吗?如果是,则CSS规则有效。因此,这意味着您需要简单地将链接设置为与文本其余部分具有相同的颜色,并且不应在其上加下划线。。。此外,您应该能够取消我向您展示的web代理的加载请求!至于正确的CSS,请看这个线程::.active{指针事件:无;游标:默认;}设置UIDataDetectorTypeNone没有奇怪的区别。所有的链接仍然可以点击。即使通过interface builder取消选中该框也没有什么区别。今晚我将尝试你的最后一条建议,谢谢。你当然可以通过shouldStartLoadWithRequest代表禁用链接。至于禁止链接显示为链接,这取决于使用正确的CSS规则,基于我在上面示例中显示的方式。也许有更好的CSS方法,但是我在CSSI方面不是很好,我已经实现了[webNews stringByEvaluatingJavaScriptFromString:@“document.styleSheets[0].addRule(\'a.link\,\'color:\ FF0000\”);在-(void)webViewDidFinishLoad:(UIWebView*)webView委托方法中,它没有区别。所有的链接仍然是可点击的,我没说他们不会被点击!链接的颜色变为红色了吗?如果是,则CSS规则有效。这意味着你需要