5

我的最终目标是让用户能够将文本拆分为一个NSTextViewUITextView多个部分,其中两个后续部分在视觉上由自定义视图分隔符分隔(可能,但不一定是水平规则 - 我希望能够调整分离器的视觉外观没有麻烦)。

分节分隔符的示例屏幕截图

我需要一个适用于两个平台的解决方案:macOS 和 iOS

(我的相关问题集中在 macOS 的解决方案上,其中一个使用了NSTextAttachmentCelliOS 上不可用的 s 。)

我目前解决这个问题的方法如下:

  1. 我在窗口的工具栏中有一个按钮来插入分节符。
  2. 当用户点击该按钮时,我会创建一个没有文本但带有文本附件的新属性字符串:

    let attachment = SectionChangeTextAttachment()
    let attachmentString = NSAttributedString(attachment: attachment)
    

    SectionChangeTextAttachment是我创建的自定义子类,NSTextAttachment以便能够将此分节符附件与其他可能的附件区分开来。)

  3. 我将其插入attachmentString到当前光标位置的文本存储中:

    textStorage.insert(attachmentString, at: textView.selectedRange().location)
    
  4. 我创建了一个自定义NSLayoutManager子类。它的任务是找到类的所有附件,SectionChangeTextAttachment并用分隔图(或字形?)替换所有出现的地方。这就是问题所在:由于 Apple 的文档有限且部分过时,我无法弄清楚如何做到这一点。

所以我的问题是:

如何让我的布局管理器使用比字符/字形占用更多空间的自定义绘图(分隔符)替换附件字符(带有特定附件)?

(我猜附件字符没有字形,因此布局管理器没有为它提供任何空间。)

为了使这项工作,我需要覆盖哪些方法?

(这种方法一开始是否有意义?)

4

0 回答 0