点击 UILabel 并执行操作

Posted

技术标签:

【中文标题】点击 UILabel 并执行操作【英文标题】:Click on UILabel and perform action 【发布时间】:2016-04-12 03:48:27 【问题描述】:

我有一个简单的问题,我有一个类似“#my#name#is#umesh#verma”的字符串并分配给 UITableview 单元格标签,

cell.detaillabel.text = @"#my#name#is#umesh#verma";

我的问题是当我单击单个项目时如何获取每个单词的名称。 如果我点击#umesh,我会得到“umesh”这个词..

【问题讨论】:

查看***.com/questions/4373053/… 您可以根据名称的数量动态生成多个标签或按钮。用# 分隔字符串,这样您将获得单词数组。在 for 循环中动态添加按钮或标签。 我听从了你的建议,但是当我生成多个按钮并且我需要重新加载表格时遇到了一些问题,然后这些组件被添加到所有单元格中,同时将组件添加为.. [cell.detaillabel.contentview addsubview:[uilabel]]; 【参考方案1】:

更好的解决方案是添加支持触摸的自定义标签。例如TTTAttributedLabel 支持触摸链接。

主要任务是当用户触摸一个单词并识别该单词时获得通知。

您可以将 URL(具有特殊格式)添加到任何单词,并在用户单击它时订阅通知(作为标签的代表)。例如,您可以为“word”创建此 URL:

touchscheme://word

【讨论】:

【参考方案2】:

我还没有检查单击 UILabel 时如何执行操作。但是,我在 UITextView 中体验到了这一点。你可以使用“NSLinkAttributeName”来做到这一点。

基本上,从您的原始字符串中,尝试找到您需要触发操作的字符串范围。然后添加一个链接值。

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:yourString];
    [attributedString addAttribute:NSLinkAttributeName value:url range:range];
[textView setAttributedText:attributedString];

将委托设置为您的 textView 并处理以下方法

-(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
// You can retrive your string here or perform an action
return YES;

希望这对你有帮助。

【讨论】:

以上是关于点击 UILabel 并执行操作的主要内容,如果未能解决你的问题,请参考以下文章

是否可以为 UILabel 分配可访问性操作?

点击并按住以在 UILabel 中显示完整的文本

为 UITapGestureRecognizer 识别多个 UILabel 点击

是否可以对 UILabel 进行电话呼叫操作?

iOS UITextView 或 UILabel 带有可点击的动作链接[重复]

以编程方式更改 UILabel 上的约束打破布局