如何检测UILabel的特定部分(子串)上的分接头?

时间:2013-09-08 05:28:58

标签: ios objective-c uilabel uitapgesturerecognizer

我是iOS开发的新手。我不知道这些问题是否已被提出, 我尝试在stackoverflow上搜索解决方案,但没有得到任何结果。

问题:

我有UILabel名为myLabel的文字:“点击此处继续”

现在问题是我想在用户点击“点击”时执行操作。

我知道如何使用UITapGestureRecognizer,但它会响应整个UILabel。是否可以只检测用户何时只点击字符串“Click”?

1 个答案:

答案 0 :(得分:5)

您可以检查触摸的位置,看它是否在“点击”一词上。这可能不完全准确,如果您更改标签中的文字可能会中断。

您可以做的是首先使用以下方法获取点击的位置:

CGPoint location = [gesture locationInView:gesture.view];

这会在您的视图中获取手势的位置。

一旦你有了这个,你就可以使用“Click”这个单词的大小进行硬编码,或者你可以为你的手势标签创建一个相同的标签来获得大小,例如:

UILabel *sizeLabel = //create label with same font.
[sizeLabel setText:@"Click"];
float width = [sizeLabel sizeThatFits:CGSizeMake(MAXFLOAT,MAXFLOAT)].width;

您还可以在创建实际标签时执行此操作,并将此宽度存储在静态变量中,这样您只需执行一次,而无需创建额外标签(即设置真实标签的文本)到@“点击”,获取宽度,然后将其设置为真实文本。)

一旦你有了宽度,你和水龙头的位置,你可以通过比较来检查是否点击了“点击”这个词:

if (location.x < width) {
    //Put your tap code in here.
}