Macos NSTextView:获取文本更改(插入和删除)

Macos NSTextView:获取文本更改(插入和删除),macos,cocoa,nstextview,Macos,Cocoa,Nstextview,我得到了一个NSTextView,我得到了-textDidChange:通知。从中,我可以得到整个textview的当前字符串值,但我不知道如何判断删除和添加了哪些内容 例如,如果文本视图中的字符串是这是一个字符串,并且用户删除了g,如何让我知道该更改 有没有办法做到这一点,最好不要子类化?有几种方法可以满足您的需求: – textView:shouldChangeTextInRange:replacementString: – textView:shouldChangeTextInRanges

我得到了一个
NSTextView
,我得到了
-textDidChange:
通知。从中,我可以得到整个textview的当前字符串值,但我不知道如何判断删除和添加了哪些内容

例如,如果文本视图中的字符串是
这是一个字符串
,并且用户删除了
g
,如何让我知道该更改

有没有办法做到这一点,最好不要子类化?

有几种方法可以满足您的需求:

– textView:shouldChangeTextInRange:replacementString:
– textView:shouldChangeTextInRanges:replacementStrings:
– textView:shouldChangeTypingAttributes:toAttributes:
– textViewDidChangeTypingAttributes:

我看到了这些,但我感到困惑(至少前3个),因为它们是
BOOL
方法。这让我很困惑,因为我不知道到底该在这里做什么。此时尚未提交文本更改,对吗?您必须在完成所有需要执行的操作后返回BOOL。你可能只想返回YES,除非你想禁止某些更改。哦,是的,这就是我一直在做的。我只是不确定这是否是一个做大量工作的地方(我正在尝试做一些语法帮助,比如根据插入或删除的内容自动插入或删除字符)。如果你不想子类化,那么这就是你应该做的地方。