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

12 objective-c uilabel ios uitapgesturerecognizer

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

题 :

我有一个UILabelmyLabel文字:"点击这里继续"

现在问题是我想在用户点击"点击"时执行操作.

我知道如何使用UITapGestureRecognizer,但它对整体有所回应UILabel.是否可以只检测用户何时只点击字符串"Click"?

Jsd*_*ers 5

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

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

CGPoint location = [gesture locationInView:gesture.view];
Run Code Online (Sandbox Code Playgroud)

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

完成此操作后,您可以使用"Click"字样的大小进行硬编码,也可以为手势标签创建相同的标签以获得大小,例如:

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

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

获得宽度,您和水龙头的位置后,您可以通过比较来检查是否点击了"点击"一词:

if (location.x < width) {
    //Put your tap code in here.
}
Run Code Online (Sandbox Code Playgroud)