Ios 通过单击Uitextview或UILabel中的某个单词来执行操作

Ios 通过单击Uitextview或UILabel中的某个单词来执行操作,ios,iphone,cocoa-touch,ios7,Ios,Iphone,Cocoa Touch,Ios7,当用户单击Uitextview(或UIlabel)中的某个格式化/特定单词时,如何执行某些特定操作(如显示模式或按下控制器)? 我听说过NSAttributedString,但我不知道如何使用它 我想要的是与facebook应用程序相同的结果。当您单击一个名称时,它会推送另一个控制器: 如果您能给我一些提示、教程或任何您想要的信息,请。您可以在标签上添加手势识别器。例如: [yourLabel setUserInteractionEnabled:YES]; UITapGestureRecogn

当用户单击Uitextview(或UIlabel)中的某个格式化/特定单词时,如何执行某些特定操作(如显示模式或按下控制器)? 我听说过NSAttributedString,但我不知道如何使用它

我想要的是与facebook应用程序相同的结果。当您单击一个名称时,它会推送另一个控制器:


如果您能给我一些提示、教程或任何您想要的信息,请。

您可以在标签上添加手势识别器。例如:

[yourLabel setUserInteractionEnabled:YES];
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelButton:)];
[tapGestureRecognizer setNumberOfTapsRequired:1];
[yourLabel addGestureRecognizer:tapGestureRecognizer];
[tapGestureRecognizer release];

您没有指定您正在使用的版本,也没有指定它是通过IB还是通过编程实现的。这将在标签上设置手势识别器。选择器是您要执行的操作,例如performSegue等。请让我知道这是如何进行的。

这是一种黑客行为,但您可以尝试使用自定义URL并将其附加到标签中的单词/短语:

    TTTAttributedLabel *label;
    //after setting the label text:
    [label addLinkToURL:[NSURL URLWithString:@"http://www.stackoverflow.com"] withRange:[label.text rangeOfString:@"CLICKABLE TEXT HERE"]];
然后在委托方法中,调用所选操作:

#pragma mark - TTTAttributedLabelDelegate

- (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url {
    // for handling the URL but we just call our action
    [self userHasClickedTextInLabel];
}

将手势识别器添加到UITextView:

//bind gesture
[_yourTextView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:delegate action:@selector(didReceiveGestureOnText:)]];
然后用以下代码检查DidReceiveGestureContext中单击的单词:

+(NSString*)getPressedWordWithRecognizer:(UIGestureRecognizer*)recognizer
{
    //get view
    UITextView *textView = (UITextView *)recognizer.view;
    //get location
    CGPoint location = [recognizer locationInView:textView];
    UITextPosition *tapPosition = [textView closestPositionToPoint:location];
    UITextRange *textRange = [textView.tokenizer rangeEnclosingPosition:tapPosition withGranularity:UITextGranularityWord inDirection:UITextLayoutDirectionRight];

    //return string
    return [textView textInRange:textRange];
}
编辑

以下是DidReceivegestureContext方法的外观:

-(void)didReceiveGestureOnText:(UITapGestureRecognizer*)recognizer
{
    //check if this is actual user
    NSString* pressedWord = [delegate getPressedWordWithRecognizer:recognizer];
}

然而,这将引导您检查字符串,毕竟它非常酷(因为它很慢)。

它不是文本视图,而是标签:)顺便说一句,请查看此网站->以及第二部分(“签出…”)也是一个标签吗?在我提供的屏幕截图中。是的,它是带有动态框架的标签:)以编程方式创建UIButton我正在使用ios 7和xcode 5。无论它是通过IB还是通过编程实现的。您的示例适用于整个标签。如果我在标签中有一个文本,比如:“这是我的带有[word1]和[word2]的示例”。我想将我点击的单词(word1或word2)发送给我的选择器,但如果用户点击其他任何东西,我不想执行任何操作。嗯,我明白你的意思。您最初的问题并不清楚,但我认为您应该研究NSAttributedString之类的内容。他到底是怎么做的恐怕我不确定,但我会调查一下,因为这将是一个有趣的问题,看看这个问题的解决方案。请看这个回答是高度低估了!它工作得很好,但需要改进,请参见答案