单击UILabel并执行操作

时间:2016-04-12 03:48:27

标签: objective-c uilabel uitapgesturerecognizer

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

public class CustomMessageTreeNode extends DefaultMutableTreeNode{
    private Message message;

    public CustomMessageTreeNode(String msgName){
        super(msgName);
    }   
    public Message getMessage() {
        return message;
    }    
    public void setMessage(Message message) {
        this.message = message;
    }   
}

我的问题是当我点击单个项目时如何获取每个单词的名称。  如果我点击#umesh然后我得到“umesh”字样。

2 个答案:

答案 0 :(得分:0)

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

主要任务是在用户触摸单词并识别单词时收到通知。

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

touchscheme:// word

答案 1 :(得分:0)

我没有检查过点击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;

}

希望这会对你有所帮助。