如何检测UILabel的特定部分(子string)的水龙头?

我是iOS开发新手。 我不知道这个问题是否已经被问及,我试图在stackoverflow上search解决scheme,但没有得到任何结果。

题 :

我有一个名为myLabelUILabel文本: “点击这里继续”

现在的问题是我想执行一个操作,当用户点击“点击”。

我知道如何使用UITapGestureRecognizer ,但它响应整个UILabel 。 是否有可能只检测用户只点击string“点击”?

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

你可以做的是首先获得点击的位置使用:

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

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

一旦你有了这个,你可以有单词的大小“点击”硬编码,或者你可以创build一个相同的标签到你的手势标签来获得大小,如:

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

创build实际标签时也可以这样做,并将这个宽度存储在一个静态variables中,这样你只需要做一次,而不必创build一个额外的标签(即将实际标签的文本设置为“点击“,获得宽度,然后将其设置为真实的文字)。

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

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