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

标签 ios iphone cocoa-touch ios7

当用户点击 Uitextview(或 UIlabel)中的某个格式化/特定单词时,我该如何执行某些特定操作(例如显示模态或推送 Controller )? 我听说过 NSAttributedString,但我不确定如何使用它。

我想要的是与 facebook 应用程序相同的结果。当你点击一个名字时,它会推送另一个 Controller :

facebook example

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

最佳答案

将手势识别器添加到您的 UITextView:

//bind gesture
[_yourTextView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:delegate action:@selector(didReceiveGestureOnText:)]];

然后使用以下代码检查在 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];
}

编辑

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

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

然而,这会导致您检查字符串,毕竟这真的很酷(因为它很慢)。

关于ios - 通过单击 Uitextview 或 UILabel 中的某个单词执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21749049/

相关文章:

ios - 更改日历时未保存 EKEventEditViewController 更改

iphone - 如何使用sendsynchronousRequest :queue:completionHandler:

objective-c - NSURLConnection 中的保证顺序

iphone - 单击另一个单元格时,将UITableViewCell折叠为原始大小

objective-c - 获取 UIScrollView 内容的可见矩形

ios - 加速 : how do I add multiple vectors into an output vector of different size from the input vectors?

iphone - 如何截取整个 View 的 iPhone 屏幕截图,包括屏幕外的部分?

ios - 自定义 UITableView - iOs

iphone - View 和 View Controller

javascript - webview 与 native iOS 应用程序通信的任何方式?