使 JSON 字符串中的 href 超文本链接在 iOS 应用程序中工作

Make href hypertext links in JSON strings work in iOS app

我在我的应用程序中使用 JSON 来调用数据库中的元素。
这些元素之一是带有 href links.

的文本块

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>

是否可以正确地编写/删除此 link?

我遇到 this solution 剥离 html,效果很好,但我的 link 不起作用,我想知道我是否可以保留我的 link正在工作。

好的,经过更多的搜索和尝试,我终于得到了我需要的东西。

我首先尝试将我的字符串放在 UITextView 中,可以通过链接检测进行选择。如果我在文本中直接写下我的 URL 就好了。

但是,我从 JSON 收到的字符串看起来像:

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

我查看了 Fancy UILabels and NSDataDetector,但标签似乎可以正常工作,但仍然显示 http://,这对我来说看起来不太好。

所以我认为最好的方法是将这个字符串放在 UIWebView 中,并像这样调用它(我用 TextView 替换了问题中的 TextLabel)。

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

我终于遇到了最后一个问题,因为链接是在 UIWebView 而不是 Safari 中打开的。

所以我在viewDidLoad中添加了self.TextView.delegate = self;

-(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];

希望这可以为其他人腾出一些时间。