【问题标题】:Clicking & Editing Words of a Sentence in Label在标签中单击和编辑句子的单词
【发布时间】:2016-04-30 03:06:42
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c macos cocoa nstextfield nsbutton


    【解决方案1】:

    这个任务没有原生决定,但你看向正确的方向:

    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,然后(我知道选定的文本位置)我只是简单地替换这个单词,如果有问题,我可以回答......

    P.S 抱歉,我没有注意到关于 OS X 编程的问题,但它可能对你也有帮助

    【讨论】:

    • 谢谢。我是 Objective-c 和可可的新手。那么相当于 UITextView 的 OSX 会是 NSTextView 吗?如果我能以某种方式在 OSX 上使用您的解决方案,我会看看。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 2015-05-06
    • 2015-03-28
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    相关资源
    最近更新 更多