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

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

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

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

【问题讨论】:

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

标签: objective-c uilabel uitapgesturerecognizer


【解决方案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;
    

    }

    希望这对你有帮助。

    【讨论】:

      猜你喜欢
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      相关资源
      最近更新 更多