当用户点击 Uitextview(或 UIlabel)中的某个格式化/特定单词时,我该如何执行某些特定操作(例如显示模态或推送 Controller )? 我听说过 NSAttributedString,但我不确定如何使用它。
我想要的是与 facebook 应用程序相同的结果。当你点击一个名字时,它会推送另一个 Controller :
如果你能给我一些提示、教程或任何你想要的东西。
最佳答案
将手势识别器添加到您的 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/