例如,我想向UILabel
显示许多用户个人资料的链接,例如:
“[John],[Josef],[Doe],[May]和[You]喜欢这个”
我们的想法是每个 [name] 都会调用不同的TapGestureRecognizer。
另一种选择是创建不同的UILabels
并将它们连接起来像字符串,但不知道如何做到这一点。
答案 0 :(得分:1)
确实,您无法仅将手势识别器附加到UIView的某些部分。而标签是一个单一的UIView,所以只使用这两个部分除了拦截touchesBegan并试图找出基本的触摸坐标之外没有任何解决方案。
如果你想走那条路,你会发现这很有帮助:
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.
答案 1 :(得分:1)
已经为您发明了显示文本中的可单个单词:使用UIWebView
而不是标签。将文本格式化为HTML,使每个名称成为链接,并使用Web视图委托方法查看已经使用的内容。