如何在IOS7中使#key和@key可点击

时间:2013-10-10 15:08:54

标签: ios ios5 ios6

任何人都知道如何在IOS7中的评论文本中使#KEY和@NAME可以点击(例如,与Instagram相同的方式)?我正在尝试使用NSMutableAttributedString,但我不确定如何检测点击事件,在下图中单击@Username应该将用户带到用户的配置文件

enter image description here

3 个答案:

答案 0 :(得分:7)

查看UITextViewDelegate protocol,iOS7中有一种新方法:textView:shouldInteractWithURL:inRange:

您没有共享任何代码,但可以安全地假设您有attributedStringrange代表您变成蓝色的区域。我还假设您可以将用户名提取到名为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>找出所点击的文字以及是否为“链接”。