2015-04-29 2 views
-1

Я использую JSON в своем приложении для вызова элементов из базы данных.
Одним из этих элементов является текстовый блок с ссылками href.Сделать гиперссылки href в строках JSON работать в приложении iOS

JSON выглядит следующим образом:

"textBlock":"<a href=\"http:\/\/www.website.com\/" target=\"_blank\">Link<\/a> 

В моем приложении я называю этикетку с:

self.TextLabel.text = self.item[@"textBlock"]; 
[selfTextLabel sizeToFit]; 

Результат в мое приложение показывает:

<a href="http://www.website.com/" target="_blank">Link</a> 

Можно ли писать/удалить эту ссылку правильно?

Я столкнулся с this solution, чтобы удалить html, который отлично работает, но мои ссылки не работают, я хотел бы знать, могу ли я поддерживать связь.

+0

Посмотрите в регулярном выражении? –

+0

Извините, если я, похоже, не показываю никаких исследований, но я не могу найти то, что мне нужно, поэтому я опубликовал. – David

+0

Возможный дубликат [Удалить HTML-теги из NSString на iPhone] (http://stackoverflow.com/questions/277055/remove-html-tags-from-an-nsstring-on-the-iphone) –

ответ

1

ОК, поэтому после нескольких поисков и попыток я наконец получил то, что мне было нужно.

Сначала я попытался поместить свою строку в UITextView, которую можно выбрать с помощью обнаружения ссылок. Было бы здорово, если бы я прямо написал свои URL-адреса в тексте.

Но опять же, строки, которые я получаю от JSON выглядеть следующим образом:

<a href="http://www.website.com/" target="_blank">Link</a> 

Я смотрел на Fancy UILabels и NSDataDetector, но казалось, что метки работали, но все еще показывает HTTP: //, который не выглядел хорошо меня.

Итак, я решил, что лучший способ - поместить эту строку в UIWebView и называть ее (я заменил TextLabel на вопрос TextView).

[self.TextView loadHTMLString:self.item[@"textBlock"] baseURL:nil]; 

У меня, наконец, был последний номер, поскольку ссылки открывались в UIWebView вместо Safari.

Поэтому я добавил self.TextView.delegate = self; в viewDidLoad.

И

-(BOOL) webView:(UIWebView *)TextView shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType { 
    if (inType == UIWebViewNavigationTypeLinkClicked) { 
     [[UIApplication sharedApplication] openURL:[inRequest URL]]; 
     return NO; 
    } 

    return YES; 
} 

.h файл также должен позвонить UIWebViewDelegate.

И если вы думаете UIWebView шрифт по умолчанию некрасиво в этом случае, как я сделал, вы можете сделать:

NSString *nicerTextBlock = self.item[@"textBlock"]; 
[self.textView loadHTMLString:[NSString stringWithFormat:@"<style type='text/css'>body { font-family: Helvetica; font-size: 12 } ></style>%@", nicerTextBlock] baseURL:nil]; 

Надеется, что это может сэкономить время для других людей.

 Смежные вопросы

  • Нет связанных вопросов^_^