-3

我有一个包含文本的 UILabel。

一旦我按下这个 UILabel,我想从我手指按下的位置提取一个单词。

我在互联网上搜索了一下,但不知道如何实现它。

这里有人知道怎么做吗?

提前致谢。

4

3 回答 3

2

一旦我按下这个 UILabel,我想从我手指按下的位置提取一个单词。

使用 UILabel 可不容易做到这一点。UILabel 是一种将静态文本放在屏幕上的简单方法;它不提供可以让您确定单个单词的框架的功能。

您最好为此创建自己的视图。您需要深入研究 Core Text 来布置和绘制文本。Core Text 比仅使用简单的 UILabel 复杂得多,但它为您提供了确定每个单词在屏幕上绘制位置所需的信息和控制。您的视图可以使用该信息将触摸映射到单词。

于 2013-04-08T13:40:32.483 回答
0

最简单的方法是让每个单独的单词成为一个单独的标签,这样您所要做的就是在标签上添加一个 UITapGestureRecognizer 并在触摸时从中获取文本。

但是,如果你想用一个标签来做,这里有一些可以工作的伪代码:

  1. 将 UITapGestureRecognizer 添加到标签。触摸时,获取触摸的位置。
  2. 使用 NSString 的- (CGSize)sizeWithFont:(UIFont *)font方法来获取标签的整个字符串的大小(我们称之为 this stringSize)。
  3. 比较stringSize.width标签的宽度以找出文本开始的位置(如果您的标签居中或右对齐,这可能不在标签的起始 X 坐标处)。IE。startingX = label.width - stringSize.width / 2.
  4. 现在使用 NSString 的- (NSArray *)componentsSeparatedByString:(NSString *)separator方法将标签中的字符串分隔为每个单词,以空格字符作为分隔符。让我们将其存储到一个名为 的数组wordsAr中。
  5. 创建一个变量 ,currentXPos并将其初始化为startingX
  6. 现在创建一个遍历每个单词的 for 循环,wordsAr使用 计算该单词的大小- (CGSize)sizeWithFont:(UIFont *)font,并将其添加到currentXPos. 当currentXPos>= 您的触摸值的 x 位置时,您已经找到了您点击的单词。
于 2013-04-08T13:32:38.573 回答
0

您可以在以下链接中使用 TTTAttributedLabel:https ://github.com/mattt/TTTAttributedLabel

将您的可点击文本定义为标签的链接,然后您将得到您所需要的。

于 2014-08-27T15:45:58.720 回答