【问题标题】:How can I detect taps on a particular part (substring) of a UILabel?如何检测 UILabel 的特定部分(子字符串)上的点击?
【发布时间】:2013-09-11 21:48:20
【问题描述】:

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

问题:

我有一个名为myLabelUILabel,其文字为:“单击此处继续”

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

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

【问题讨论】:

标签: ios objective-c uilabel uitapgesturerecognizer


【解决方案1】:

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

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

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

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 2022-06-14
  • 2021-11-17
  • 2022-01-18
  • 2019-10-20
  • 1970-01-01
相关资源
最近更新 更多