objective-c – 如何在Mac OS X上的NSTextField中启用拼写检查?

objective-c – 如何在Mac OS X上的NSTextField中启用拼写检查?,第1张

概述我有一个NSTextField,我想启用“as-you-type”拼写检查.当我加载我的应用程序时,我可以从菜单栏>编辑>拼写和语法>键入时检查拼写. 我希望默认情况下启用此选项.在IB中我可以为NSTextView启用它,但我想在这部分UI中使用NSTextField. 谢谢. 更新:有谁知道是否可以以编程方式运行菜单栏>编辑>拼写和语法>从Objective-C代码检查NSTextField上 我有一个NSTextFIEld,我想启用“as-you-type”拼写检查.当我加载我的应用程序时,我可以从菜单栏>编辑>拼写和语法>键入时检查拼写.

我希望默认情况下启用此选项.在IB中我可以为NSTextVIEw启用它,但我想在这部分UI中使用NSTextFIEld.

谢谢.

更新:有谁知道是否可以以编程方式运行菜单栏>编辑>拼写和语法>从Objective-C代码检查NSTextFIEld上的拼写选项时的拼写检查?似乎NSTextFIEld支持“在键入时检查拼写”选项,只是没有办法从Obj-C启用该选项.

编辑#1

我尝试了以下手动启用菜单,但它不起作用:

// Focus TextFIEld[textFIEld becomeFirstResponder];// Enable Spell CheckingNSMenu *mainMenu = [[NSApplication sharedApplication] mainMenu];NSMenu *editMenu = [[mainMenu itemWithTitle:@"Edit"] submenu];NSMenu *spellingMenu = [[editMenu itemWithTitle:@"Spelling and Grammar"] submenu];NSMenuItem *autoSpellingMenuItem = [spellingMenu itemWithTitle:@"Check Spelling While TyPing"];[autoSpellingMenuItem setEnabled:YES];NSLog(@"Menu: %@",[autoSpellingMenuItem description]);NSLog(@"Target: %@",[[autoSpellingMenuItem target] description]);// Actually perform menu action[[autoSpellingMenuItem target] performSelector:[autoSpellingMenuItem action]];

是不是可以直接调用菜单项 *** 作而不是使用setEnabled:YES?

以上输出如下,不确定目标为空的原因

App[3895:a0f] Menu: <NSMenuItem: 0x100135180 Check Spelling While TyPing>Current language:  auto; currently objective-cApp[3895:a0f] Target: (null)

如果其他人需要知道,以下是此问题的解决方案.一些NSLogging告诉我,在将NSTextFIEld设置为firstResponder之后,firstResponder实际上包含NSTextVIEw,然后您可以启用拼写.我假设NSTextFIEld在子视图中包含一个NSTextVIEw,它接收响应者,实际上这应该在NSTextFIEld类中公开.

// Focus TextFIEld[textFIEld becomeFirstResponder];// Enable Continous SpellingNSTextVIEw *textVIEw = (NSTextVIEw *)[self.window firstResponder];[textVIEw setContinuousspellCheckingEnabled:YES];
解决方法 你很幸运,Apple提供了一个拼写检查课:NsspellChecker:

http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/SpellCheck/Concepts/SpellChecker.html

使用此方法,您可以在每次用户使用textdIDChange委托方法更新文本时检查拼写.

另外你说你想使用NSTextFIEld而不是NSTextVIEw.为什么不使用可编辑的NSTextVIEw来设置toggleautomaticSpellingCorrection属性?

编辑:

要以编程方式更改菜单项的值,请执行以下 *** 作:

// Enable Spell CheckingNSMenu *mainMenu = [[NSApplication sharedApplication] mainMenu];NSMenu *editMenu = [[mainMenu itemWithTitle:@"Edit"] submenu];NSMenu *spellingMenu = [[editMenu itemWithTitle:@"Spelling and Grammar"] submenu];NSMenuItem *autoSpellingMenuItem = [spellingMenu itemWithTitle:@"Check Spelling While TyPing"];[autoSpellingMenuItem setEnabled:YES];// Actually perform menu action[[autoSpellingMenuItem target] performSelector:[autoSpellingMenuItem action]];

编辑:

看起来上面的方法实际上并没有像预期的那样触发方法,并且目标是NulL(因为第一个响应者还没有被设置?).但是可以直接发送消息,如下所示:

// Focus TextFIEld[textFIEld becomeFirstResponder];// Enable Continous SpellingNSTextVIEw *textVIEw = (NSTextVIEw *)[self.window firstResponder];[textVIEw setContinuousspellCheckingEnabled:YES];
总结

以上是内存溢出为你收集整理的objective-c – 如何在Mac OS X上的NSTextField中启用拼写检查?全部内容,希望文章能够帮你解决objective-c – 如何在Mac OS X上的NSTextField中启用拼写检查?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1034340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存