如何知道何时将附件属性添加到我的NSTextView?

dan*_*ass 8 cocoa nstextview

由于我的应用程序中某些NSTextView附件的语义,我想知道它们何时从我的文本存储中插入或删除.

我的NSTextView子类实现了shouldChangeTextInRange:replacementString:方法,它允许我轻松查看附件何时被替换(我可以在指定范围内搜索文本存储).

因为替换字符串只是NSString而不是NSAttributedString,所以我无法从此方法中看到是否正在插入附件.文档甚至可以说,如果正在编辑"仅属性",则字符串可能为nil.

所以问题是,在插入附件时最好的覆盖点是什么?或者也许有用:什么是最好的覆盖点,以查看何时修改属性?

更新:我上面说过,我无法知道是否插入了附件.我向我指出,我可以告诉我涉及"一个"附件,因为该字符串将包含神奇的NSAttachmentCharacter.但在编辑完成之前,我将不会提供有关附件的具体信息.

Bri*_*ter 5

我会看一下 NSTextStorage 委托方法 -textStorageDidProcessEditing:,每次对底层文本存储进行更改时都应该调用该方法。然后,您可以使用 -editedRange、-editedMask 和 -changeInLength 方法来确定文本存储的哪个部分已更改,并在该范围中查找您可能感兴趣的任何附件。