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

如果我已正确理解这一点,那么现在看来这与标签是不可能的。我有什么选择?我考虑过将每个单词放在单独的NSButton上(并将按钮的设计更改为不再看起来像Buttons)。但是必须有一个更简单的解决方案吗?

最佳答案

此任务尚无本地决策,但您的方向是正确的:

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

2)必须显示带有选择选项的视图

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

在检测到用户按下的单词后,我使用UITextView显示了一些文本:
我在我的UITextView上添加了TapGesture,并在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”,则我会显示pickerView并带有一些选择,然后(我知道所选的文字位置)我会简单地替换该单词,如果有问题,我可以回答...

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

10-07 19:14
查看更多