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

ana*_*ali 1 iphone cocoa-touch ios ios7

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

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

facebook的例子

如果你能给我一些提示,教程或任何你想要的东西.

hri*_*.to 9

将手势识别器添加到UITextView:

//bind gesture
[_yourTextView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:delegate action:@selector(didReceiveGestureOnText:)]];
Run Code Online (Sandbox Code Playgroud)

然后用以下代码检查didReceiveGestureOnText中单击的单词:

+(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];
}
Run Code Online (Sandbox Code Playgroud)

编辑

这就是你的didReceiveGestureOnText方法应该是这样的:

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

然而,这将导致你在检查字符串之后真的很酷(因为它很慢).