使 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];
希望这可以为其他人腾出一些时间。
我在我的应用程序中使用 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];
希望这可以为其他人腾出一些时间。