Це стара відповідь, яку я опублікував кілька років тому. Я мав намір не запропонувати "гарне" та "респектабельне" рішення, а "хакі", яке може бути корисним за певних обставин. Будь ласка, не використовуйте це рішення, якщо ніщо інше не працює.
Насправді це чудово працює в багатьох ситуаціях, а інші відповіді не роблять, оскільки UIWebView виконує всю роботу. І ви навіть можете ввести якийсь javascript (що може бути небезпечним та / або корисним). Виступ повинен бути жахливим, але насправді не так вже й поганий.
Існує ще одне рішення, яке слід згадати. Просто створіть a UIWebView
, завантажте закодований рядок і поверніть текст назад. Він уникає тегів "<>", а також декодує всі HTML-сутності (наприклад, "& gt;"), і він може працювати там, де інших немає (наприклад, за допомогою кирилиці). Я не думаю, що це найкраще рішення, але воно може бути корисним, якщо вищезазначені рішення не працюють.
Ось невеликий приклад використання ARC:
@interface YourClass() <UIWebViewDelegate>
@property UIWebView *webView;
@end
@implementation YourClass
- (void)someMethodWhereYouGetTheHtmlString:(NSString *)htmlString {
self.webView = [[UIWebView alloc] init];
NSString *htmlString = [NSString stringWithFormat:@"<html><body>%@</body></html>", self.description];
[self.webView loadHTMLString:htmlString baseURL:nil];
self.webView.delegate = self;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
self.webView = nil;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
self.webView = nil;
NSString *escapedString = [self.webView stringByEvaluatingJavaScriptFromString:@"document.body.textContent;"];
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
}
@end