【问题标题】:how to make #key and @key clickable in IOS7如何在IOS7中使#key和@key可点击
【发布时间】:2013-10-10 15:08:54
【问题描述】:

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

【问题讨论】:

  • “标签”出现在哪里?在应用程序中?在UITextField ?
  • 嗨@ShivanRaptor 它发生在应用程序中。基本上,如果用户在他们的评论中输入#key,当该评论呈现时,我们想要点击#key并获得一些搜索结果
  • 当你说评论时,它在 UIWebView 中是基于网络的吗?我很困惑。更好地向我们展示代码和屏幕截图。
  • 我添加了截图
  • 查看github.com/mattt/TTTAttributedLabel,这是一个稳定、维护良好的 UILabel 子类,它提供了您正在寻找的开箱即用的功能。

标签: ios ios5 ios6


【解决方案1】:

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 的 Introducing Text Kit 会议上对此进行了演示。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我在我的一个应用程序中使用了这种方法,这是适用于大多数 iOS 版本(包括旧版本)的最简单的方法。副作用是,加载速度很慢(除非在显示给用户之前预先渲染了东西),如果不是全屏,UIWebView 的大小必须额外调整大小。
    【解决方案3】:

    您可以使用DTCoreText 查看,它提供了链接按钮,您可以添加到属性文本中。它基于 HTML 解析,因此您需要对解析做一些额外的工作来确定链接按钮的位置。

    或者,您可以在评论视图中添加一个拍拍手势识别器。当检测到点击时,您可以使用&lt;UITextInput&gt; 找出点击的文本以及是否是“链接”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 2011-04-20
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 2019-02-02
      相关资源
      最近更新 更多