1

例如,我想显示一个UILabel带有指向许多用户配置文件的链接,例如:

“[John]、[Josef]、[Doe]、[May] 和 [You] 喜欢这样”

这个想法是每个[name]调用一个不同的 TapGestureRecognizer。

另一种选择是创建不同的UILabels并将它们像字符串一样连接,但也不知道如何做到这一点。

4

2 回答 2

1

已为您发明了显示文本中可点击的单个单词:使用 aUIWebView而不是标签。将您的文本格式化为 HTML,使每个名称都成为链接,并使用 Web 视图委托方法查看已点击的内容。

于 2013-03-08T07:55:10.123 回答
1

确实,您不能仅将手势识别器附加到 UIView 的某些部分。Label 是单个 UIView,因此仅使用这两个部分没有解决方案,除了拦截 touchesBegan 并试图找出 base don touch 坐标是哪个单词。

如果你想走那条路,你会发现这很有帮助:

NSString* text = @"John";
CGSize size = [text sizeWithFont:font];

这使您可以计算出给定字体(您的标签使用的字体)中绘制文本的大小,然后进行一些可怕的数学运算以找出您的单词在哪里并比较触摸位置。

另一种可能性是为每个单词使用单独的 UILabel。同样,您将使用,sizeWithFont但现在您使用它来设置每个标签的 label.frame.size.width 以适合给定的文本。然后,您可以编写代码来设置所有标签的 .frame,使它们彼此相邻排列。

NSString* text = @"John";
CGSize size = [text sizeWithFont:font];
CGRect frame = myUILabelObject.frame;
frame.size.width = size.width;
myUILabelObject.frame = frame;
// Now next label, setting label.frame to position it next to this label.
于 2013-03-08T07:27:20.910 回答