将控件添加到NSTextView并将它们绑定到(范围)字符

时间:2012-05-23 01:13:56

标签: cocoa nstextview

编辑代码时,Xcode可以显示文本控件,例如可以显示上下文菜单的下拉按钮。我见过其他OS X应用程序处理具有类似功能的文本。参见随附的样本。

enter image description here

我认为这种效果是使用NSTextAttachmentCell获得的 - 虽然我不确定这是否是实现此目的的正确方法。

对于我自己的应用程序,我也想使用这种技术。

我有以下问题:

  • NSTextAttachmentCell是实现此功能的正确方法吗?如果没有,会是什么?

  • 如何将上述示例中的控件可比较 - 附加到特定范围的文本,以使其在NSTextView内的位置是动态的并遵循布局操作?

    < / LI>

我发现this提供了一些提示但未涵盖特定文字范围的附件。

1 个答案:

答案 0 :(得分:1)

虽然NSTextAttachmentCell可行,但它有一个缺点:单元格将成为文本中的一个字形,这不是我想要的。它会扭曲文本的布局,可选择等等。我希望将单元格绘制在文本上,就像Xcode中的行为一样。

挑战在于找到一种方法,将一个点从Mouse Moved事件转换为NSTextView内特定字符串的位置。

经过一番挖掘后,我在Apple的演示应用中发现了一个名为LayoutManagerDemo的小宝石。此演示显示了NSTextView的自定义子类,能够在鼠标移动视图时突出显示单个字符,单词和行。从那里开始,很容易在所需的NSPoint按下按钮,然后显示一个带有一些选项的弹出菜单。