0

我试图在我的应用程序中显示如下内容:

@user1@user2和另外3 人点赞。

许多应用程序都有这种格式的评论,比如发布者和他们的评论,例如:@me是的,苹果很好

当您点击他们的名字时,它会将您带到应用程序的某个位置。

我希望 @user1 @user2 和另外 3 个可以点击并执行选择器。

我也希望它们大胆和某种颜色。

UIWebView可以对文本进行风格化,但我可以通过触摸属性字符串的一部分来执行选择器吗?

我一直在尝试找到最好的方法来做到这一点,而无需制作标签和按钮并通过每个用户名的长度动态计算它们,如下所示:

Label  = "Liked by "
Button = "@user1"

Label ", "
Button = "@user2"

Label "and "
Button "3 more"

Label "."

一定会有更好的办法!提前致谢。

4

2 回答 2

2

使用内联 UIWebView 会更好——前提是您不需要将其添加到滚动视图中。您可以通过为它们注册一些委托然后将假协议/URL 作为链接 URL 来检测 Web 视图中的操作/链接点击。像这样的东西:

UIWebView *wv = [[UIWebView alloc] initWithFrame:aFrame];
wv.delegate = self;
[wv loadHTMLString:@"<a href='userlike:user1'>@user1</a> hates this." baseURL:nil ]; // further parts of this method name omitted
// because it's long, look it up in UIWebView class reference.
[self.view addSubview:vw];
[wv release];

和委托方法:

- (BOOL)webView:(UIWebView *)wv shouldStartLoadWithRequest:(NSURLRequest *)rq navigationType:(UIWebViewNavigationType)type
{
    if ([[[rq URL] protocol] isEqualToString:@"userlike"])
    {
        NSString *userName = [[rq URL] host];
        // extract username from the URL, then
        return NO;
    }

    // else
    return YES;
}

编辑:我找到了这个,正是你要找的。(事实证明,@regan 也提出了完全相同的建议。)

于 2012-07-23T20:28:42.087 回答
1

您可以从 HTML 代码中调用选择器,请参见此处此处的示例。

于 2012-07-23T20:27:51.673 回答