任何人都知道如何在IOS7中的评论文本中使#KEY和@NAME可以点击(例如,与Instagram相同的方式)?我正在尝试使用NSMutableAttributedString,但我不确定如何检测点击事件,在下图中单击@Username应该将用户带到用户的配置文件
答案 0 :(得分:7)
查看UITextViewDelegate
protocol,iOS7中有一种新方法:textView:shouldInteractWithURL:inRange:
。
您没有共享任何代码,但可以安全地假设您有attributedString
和range
代表您变成蓝色的区域。我还假设您可以将用户名提取到名为username
的变量中。
使用这三条信息,您可以在该范围内添加链接属性。
[attributedString addAttribute:NSLinkAttributeName
value:[@"username://" stringByAppendingString:username]
range:range];
在你的代表中,你可以这样做:
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
if ([URL.scheme isEqualToString:@"username"]) {
[self doSomethingWithUserName:URL.host];
return NO;
}
return YES;
}
我相信他们在WWDC 2013的介绍文本工具包会议中进行了演示。
答案 1 :(得分:1)
您可以使用HTML链接并使用UIWebView
进行渲染
<div>
Here goes the text. <a href="/users/Username">@Username</a> <a href="/tags/mytag">#mytag</a>.
</div>
当用户点击链接时,将调用Web视图的委托方法webView:shouldStartLoadWithRequest:navigationType:
。在那里,您可以从请求中获取URL并执行您想要的任何操作。从此方法返回NO
非常重要,否则Web视图会尝试加载请求。
答案 2 :(得分:0)
您可以使用DTCoreText查看提供链接按钮的内容,您可以将其添加到属性文本中。它基于HTML解析,因此您需要对解析进行一些额外的工作,以确定链接按钮的位置。
或者,您可以在评论视图中添加轻拍手势识别器。检测到点击后,您可以使用<UITextInput>
找出所点击的文字以及是否为“链接”。