编辑代码时,Xcode可以显示文本控件,例如可以显示上下文菜单的下拉按钮。我见过其他OS X应用程序处理具有类似功能的文本。参见随附的样本。
我认为这种效果是使用NSTextAttachmentCell
获得的 - 虽然我不确定这是否是实现此目的的正确方法。
对于我自己的应用程序,我也想使用这种技术。
我有以下问题:
NSTextAttachmentCell
是实现此功能的正确方法吗?如果没有,会是什么?
如何将上述示例中的控件可比较 - 附加到特定范围的文本,以使其在NSTextView
内的位置是动态的并遵循布局操作?
我发现this提供了一些提示但未涵盖特定文字范围的附件。
答案 0 :(得分:1)
虽然NSTextAttachmentCell
可行,但它有一个缺点:单元格将成为文本中的一个字形,这不是我想要的。它会扭曲文本的布局,可选择等等。我希望将单元格绘制在文本上,就像Xcode中的行为一样。
挑战在于找到一种方法,将一个点从Mouse Moved事件转换为NSTextView
内特定字符串的位置。
经过一番挖掘后,我在Apple的演示应用中发现了一个名为LayoutManagerDemo的小宝石。此演示显示了NSTextView
的自定义子类,能够在鼠标移动视图时突出显示单个字符,单词和行。从那里开始,很容易在所需的NSPoint
按下按钮,然后显示一个带有一些选项的弹出菜单。