ios – 如何检测UILabel的特定部分(子串)上的点击?

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

题 :

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

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

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

解决方法

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

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

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

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

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

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.
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...