我有一个包含文本的UILabel。如何从UILabel中提取基于手指位置的子字符串?
一旦我按下这个UILabel,我想从我手指按下的位置提取一个单词。
我在网上搜索了一下,但对如何实现它没有任何线索。
有人在这里知道如何做到这一点吗?
在此先感谢。
我有一个包含文本的UILabel。如何从UILabel中提取基于手指位置的子字符串?
一旦我按下这个UILabel,我想从我手指按下的位置提取一个单词。
我在网上搜索了一下,但对如何实现它没有任何线索。
有人在这里知道如何做到这一点吗?
在此先感谢。
一旦我按这个的UILabel,我想从 位置在我的手指按下提取一个字。
这对UILabel来说并不容易。 UILabel是一种将静态文本放在屏幕上的简单方法;它不提供可以让你确定单个单词框架的功能。
您可能会更好地为此创建自己的视图。你会想挖掘核心文本来布局和绘制文本。核心文本比使用简单的UILabel复杂得多,但是它提供了信息和控制,以确定每个单词在屏幕上的位置。您的视图可以使用该信息将触摸映射到单词。
最简单的方法是将每个单独的单词作为一个单独的标签,以便您只需将UITapGestureRecognizer添加到标签并在触摸时从中抓取文本。
如果你想用一个标签来做到这一点,不过,这里有一个方法的伪代码可以工作:
- (CGSize)sizeWithFont:(UIFont *)font
方法获取标签整个字符串的大小(我们称之为stringSize
)。stringSize.width
与标签的宽度进行比较,以确定文本的起始位置(如果标签居中或右对齐,则可能不在标签的起始X坐标处)。即。 startingX = label.width - stringSize.width/2
。- (NSArray *)componentsSeparatedByString:(NSString *)separator
方法将标签中的字符串分隔成每个单词,空格字符作为分隔符。我们将其存储到一个名为wordsAr
的数组中。currentXPos
,并将其初始化为startingX
。wordsAr
中的每个单词,使用- (CGSize)sizeWithFont:(UIFont *)font
计算该单词的大小,并将其添加到currentXPos
。当currentXPos
> =您的触摸值的x位置时,您已找到您点击的单词。您可以通过以下链接使用TTTAttributedLabel:https://github.com/mattt/TTTAttributedLabel
定义您可点击文本作为标签链接,那么你会得到正是你需要的。
我不知道位置的事情,但你可以访问你的标签文本,如:“yourLabel.text”,或者解决方法是在标签上添加带有文本的按钮。 – 2013-04-08 13:23:42
检查[this](http://stackoverflow.com/questions/4373053/uilabel-touch-and-get-the-text-where-touched)和[this](http://stackoverflow.com/questions/8811909 /在字段中触及一个uilabel-uitextview)问题在stackoverflow – derpoliuk 2013-04-08 13:29:51