TextKit:如何在Xcode中实现编辑器占位符功能?

时间:2018-11-21 15:35:57

标签: xcode cocoa nsattributedstring textkit nstextattachment

我深入研究了TextKit,并想知道如何在Xcode代码编辑器中实现编辑器占位符:

Placeholder in Xcode

您也可以自己尝试一下,并按以下内容键入内容:<#Hello#>,它会自动变成一个占位符。

Placeholder video

Xcode编辑器是使用TextKit构建的。经过研究,我提出了两种可能的策略:

  1. 使用NSTextAttachment:检测到与占位符模式<#...#>相匹配的字符串后,该字符串将被删除并由NSTextAttachment代替,该NSLayoutManager可以处理“徽章形”背景和文字。
  2. 使用<#:不确定是否可行,但可能会这样:
    • 开始标记(字形)#> + layoutManager(... shouldGenerateGlyphs, forGlyphRange...)隐藏(drawBackground(forGlyphRange glyphsToShow: NSRange, at origin: NSPoint)
    • 布局管理器负责在{{1}}中绘制徽章背景

我想实施类似的方法,并且希望您能提出任何建议,以了解进行哪种方式。

0 个答案:

没有答案