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

任何人都知道如何使IOS7中的注释文本中的#KEY和@NAME可点击(例如,instagram就是这样)? 我想使用NSMutableAttributedString,但我不知道如何检测点击事件,在下面的图像中单击@用户名应使用户的configuration文件的用户

在这里输入图像说明

查看UITextViewDelegate协议 ,在iOS7中有一个新的方法textView:shouldInteractWithURL:inRange:

你没有共享任何代码,但是假设你有一个attributedString和一个代表你变成蓝色的区域的range是安全的。 我还假设你可以将用户名提取到一个名为username的variables中。

有了这三条信息,你可以在该范围内添加一个链接属性。

 [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的介绍文本工具包会议中演示了这一点。

您可以使用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视图会尝试加载请求。

你可以看看使用DTCoreText ,它提供了链接button,你可以添加到属性文本。 它基于HTMLparsing,因此您需要在parsing时做一些额外的工作,以确定链接button的位置。

或者,您可以添加一个轻拍手势识别器到评论视图。 当检测到一个点击,你可以使用<UITextInput>来找出被点击的文本,如果它是一个“链接”。