Objective c 点击&;标签中句子的编辑

Objective c 点击&;标签中句子的编辑,objective-c,macos,cocoa,nstextfield,nsbutton,Objective C,Macos,Cocoa,Nstextfield,Nsbutton,我有几个句子是通过标签(NSTextField)显示的。这些句子有不同的单词,我希望用户点击每个单词,然后根据用户点击的内容相应地显示不同种类的信息 如果我理解正确的话,这似乎不可能用标签来做。我有什么选择?我考虑将每个单词放在一个单独的按钮上(并将按钮的设计更改为不再像按钮)。但必须有一个更简单的解决方案?此任务没有本机的决策,但您的方向是正确的: 1) 有必要跟踪用户按下的单词 2) 有必要使用选项显示视图 我有一个类似的任务,我这样做: 检测到用户按下的单词后,我使用UITextView显

我有几个句子是通过标签(NSTextField)显示的。这些句子有不同的单词,我希望用户点击每个单词,然后根据用户点击的内容相应地显示不同种类的信息


如果我理解正确的话,这似乎不可能用标签来做。我有什么选择?我考虑将每个单词放在一个单独的按钮上(并将按钮的设计更改为不再像按钮)。但必须有一个更简单的解决方案?

此任务没有本机的决策,但您的方向是正确的:

1) 有必要跟踪用户按下的单词

2) 有必要使用选项显示视图

我有一个类似的任务,我这样做:

检测到用户按下的单词后,我使用UITextView显示一些文本: 我在UITextView上添加了Tap手势,并在UITextView中禁用“可编辑”

- (IBAction)gestureAction:(UITapGestureRecognizer *)sender
{
    _textView =  (UITextView *)sender.view;
    CGPoint location = [sender locationInView:_textView];
    CGPoint position = CGPointMake(location.x, location.y);

    //get location in text
    UITextPosition *tapPosition = [_textView closestPositionToPoint:position];

    //word position 
    UITextRange *textRange = [_textView.tokenizer rangeEnclosingPosition:tapPosition withGranularity:UITextGranularityWord inDirection:UITextLayoutDirectionRight];
    NSString *tappedSentence = [_textView textInRange:textRange];
    NSLog(@"selected :%@ -- %@",tappedSentence,tapPosition);

   if ([tappedSentence isEqualToString:@"Lorem"])
   {
      //show choise view
  }
}
例如,如果点击的单词等于“Lorem”,我会用一些choose显示pickerView,然后(我知道所选的文本位置)我简单地替换这个单词,如果有问题,我可以回答


很抱歉,我没有注意到关于OSX编程的问题,但可能对您也有帮助

谢谢。我不熟悉objective-c&cocoa。那么,与UITextView等效的OSX是不是NSTextView?如果我能在OSX上使用你的解决方案,我会看看。谢谢。