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

2024-06-28

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

问题 :

我有一个UILabel called myLabel与文字:“点击此处继续”

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

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


您可以检查触摸的位置,看看是否在“Click”一词上。但这可能并不完全准确,并且如果您更改标签中的文本,则可能会中断。

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

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;

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

一旦获得了宽度、点击位置和点击位置,您就可以通过比较来检查“Click”一词是否被点击:

if (location.x < width) {
    //Put your tap code in here.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测 UILabel 特定部分(子字符串)上的点击? 的相关文章

随机推荐