gpt4 book ai didi

cocoa - 如何处理 NSTextView 首选项(拼写和语法、替换等)

转载 作者:行者123 更新时间:2023-12-03 16:15:07 26 4
gpt4 key购买 nike

NSTextView 类允许用户使用上下文菜单(右键单击)禁用/启用“打字时拼写”等功能。但是当我在自己的应用程序中使用 NSTextView 时,这些首选项不会由 TextView 本身自动保存,这意味着我必须单独保存它们 - 对吗?

现在我还想允许用户在我的应用程序首选项中更改这些设置(例如在 TextEdit 中)。我所做的是将 TextView 首选项保存在用户默认设置中,这意味着每次用户更改应用程序首选项中的设置时,我都会应用这些设置并保存它们。实现这一点非常容易,除了用户使用上下文菜单而不是通过应用程序首选项更改 TextView 设置的一种情况。

我现在的问题:当 NSTextView 的设置发生更改时,如何收到通知,以便保存它们?

最佳答案

我完成了一个项目,其中我对 NSTextView 进行了子类化,并且我可以轻松捕获用户所做的任何设置更改。

因此,要执行此操作,只需创建一个新的 .h.m 文件并按如下方式声明:

(在 .h 文件中)

@interface BrutellaTextView : NSTextView

@end

(在 .m 文件中)

@interface BrutellaTextView

- (void)setContinuousSpellCheckingEnabled:(BOOL)flag
{
// here I am just setting user defaults... you may choose
// to have some other place to save the settings
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
if(userDefaults)
{
[userDefaults setBool: flag forKey: @"continuousSpellCheckingEnabled"];
}

// and to get the functionality to actually happen,
// call the superclass
[super setContinuousSpellCheckingEnabled: flag];
}

@end

(并且您可以重写其他 NSTextView 方法来捕获其他设置更改时的情况,例如 setRulerVisible:)。

现在,当您在 XIB 文件中时,请确保将 TextView 的 CustomClass 设置为 BrutellaTextView,这样就一切就绪了!

没有通知您可以注册以获取 NSTextView 设置更改,因此就我而言,这是执行您想要执行的操作的最佳方式。

希望这个回答对你有帮助!

关于cocoa - 如何处理 NSTextView 首选项(拼写和语法、替换等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com