NSTextView textDidChange / didChangeText不要求绑定

问题描述 投票:4回答:2

我有一个自定义NSTextView实施,使文本填满整个视图,可以自动调节字体大小。

我重写了didChangeText打电话给我的字体大小调整方法。当用户在编辑文本,但didChangeText(和委托方法textDidChange:)当文本浏览内容通过绑定设置不叫伟大工程。

字体调整代码需要每当文本设置/变化,不仅在它的用户更改运行。

我如何可以检测所有更改文本在NSTextView,甚至通过绑定?

注意:如果有更好的方法来使文本填充比增加字体大小之外的整个文本视图,让我知道。

cocoa cocoa-bindings nstextview
2个回答
0
投票

这将是更好的设置字体属性分为绑定到文本视图的“attributedString”的NSAttributedString。在textDidChange:委托方法,你可以重新创建具有正确的字体属性NSAttributedString


0
投票

该方法NSTextView didChangeText不叫当绑定更新的文本(相对于文本视图更新模型)。

didChangeText是绑定更新的来源。如果忽略它,不叫超,结合被打破。 didChangeText调用委托方法textDidChange。

不幸的是,didChangeText也被称为较晚的NSTextView更新过程 - 布局和存储代表来电之后。

我发现NSTextStorageDelegate法“didProcessEditing”是赶上更改绑定字符串的最佳方式。虽然你要小心了什么样的变化,你可以回到在这一点上的TextView - 几个电话坠毁。

我回答我自己的类似的问题,更充分地在这里:NSTextView textDidChange not called through binding

© www.soinside.com 2019 - 2024. All rights reserved.