Удаление гиперссылок из URL, отображаемого в UIWebView

Я делаю приложение, которое имеет раздел для последних новостей компании. По сути, изначально планировалось использовать ASIHTTPRequest для извлечения всего HTML-кода, поиска в нем тегов, затем извлечения информации для заголовка и описания новости, а затем отображения ее в виде простого текста плана в виде прокрутки моего приложения. Тем не менее, это оказалось кошмаром, так как на сайте нет шаблона отображения информации.

С тех пор я решил отобразить URL в UIWebView, который показывает последние новости компании. Я хочу, чтобы это был одностраничный просмотр, чтобы мой пользователь не мог перейти к другим аспектам сайта. Можно ли остановить отображение гиперссылок сайтов в виде ссылок? Мой код для UIWebView выглядит следующим образом;

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;

Что не имеет никакого значения для обнаружения ссылок.

2 ответа

Решение

Хорошо, установка UIDataDetectorTypeNone для dataDetectorTypes должна помешать веб-представлению обнаруживать ссылки, это правильно.

Кроме того, используя

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

UIWebview делегат, вы можете просто вернуть NO для URL, которые вы не хотите, чтобы пользователь разрешил следующие...

Кроме того, вы можете вставить пользовательские правила 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;\")"];

Одна вещь, которую вы также можете сделать здесь для дальнейшей настройки ваших ссылок в веб-представлении, - это редактирование 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];
Другие вопросы по тегам