iPhone: Как отобразить текст из HTML-документа UIWebView в UITextView - PullRequest
1 голос
/ 15 марта 2010

У меня есть канал RSS, который организован в UITableView, который позволяет пользователю выбрать историю, которая загружается в UIWebView. Тем не менее, я хотел бы прекратить использование UIWebView и просто использовать UITextView или UILabel.

Этот png - то, что я пытаюсь сделать (просто отобразить различные текстовые аспекты новостной истории):

alt text

Я пытался использовать:

NSString *myText = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"];

и присвоение строки UILabel, но она не работает там, где я ее реализую в webViewDidFinishLoad (- это не то место?). Я получаю пустой textView и нормальный webView.

Если я наложу UITextView поверх UIWebView самостоятельно (т. Е. WebView, который загружает только одну страницу), приведенный выше код работает, текст отображается нормально. Проблема возникает, когда я пытаюсь обработать RSS-канал.

Я застрял, удивляясь, почему это не работает так, как должно, уже несколько дней. Если у вас есть лучший, более эффективный способ сделать это, чем поместить код в webViewDidFinishLoad, пожалуйста, дайте мне знать! Это идет в моем didSelectRowAtIndexPath?

Заранее большое спасибо!

Ответы [ 3 ]

1 голос
/ 15 марта 2010

Я думаю, что вы должны сначала записать строку, возвращаемую:

NSString *myText = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"];

... в случае подачи RSS, чтобы убедиться, что вы что-то получаете назад. Возможно, страница RSS не имеет одинаковых компонентов javascript и возвращает пустую строку.

После того, как вы это подтвердите, становится просто заставить его правильно отображаться в текстовом представлении.

0 голосов
/ 23 декабря 2014

Вы можете попробовать следующее:

NSString *htmlContent = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerHTML;"];

NSString *htmlContent = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML;"];

NSString *htmlContent = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerText;"];

Вы проигрываете при форматировании информации с последней строкой кода.

0 голосов
/ 15 марта 2010

Если строка NSS, которую вы хотите отобразить, не пуста, попробуйте сделать что-то подобное в методе webViewDidFinishLoad:

[yourUILabel performSelectorOnMainThread:@selector(setText:) withObject:[NSString stringWithFormat:@"bla bla %@", @"more bla"] waitUntilDone:YES];

Основная тема приложения для iphone отвечает за рисование компонентов, поэтому ваш ярлык не отображает ваш текст.

Вы также можете попробовать установить setNeedsDisplay: в true

Кроме того, UILabel не будет сохранять формат HTML. Он будет отображаться как просто текст.

...