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

2023-11-27

我有一个 NSTextField,我想启用“键入时”拼写检查。当我加载应用程序时,我可以通过菜单栏 > 编辑 > 拼写和语法 > 键入时检查拼写来执行此操作。

我希望默认启用此选项。在 IB 中,我可以为 NSTextView 启用此功能,但我想将 NSTextField 用于 UI 的这一部分。

谢谢。

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

Edit #1

我尝试了以下方法来手动启用菜单,但没有成功:

// Focus TextField
[textField becomeFirstResponder];

// Enable Spell Checking
NSMenu *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-c
App[3895:a0f] Target: (null)

SOLUTION

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

// Focus TextField
[textField becomeFirstResponder];

// Enable Continous Spelling
NSTextView *textView = (NSTextView *)[self.window firstResponder];
[textView setContinuousSpellCheckingEnabled:YES];

你很幸运,苹果提供了一个拼写检查器类:NSSpellChecker:

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

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

您还说您想使用 NSTextField 而不是 NSTextView。为什么不直接使用可编辑的 NSTextView 来设置切换自动拼写校正属性呢?

EDIT:

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

// Enable Spell Checking
NSMenu *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]];

EDIT:

看来上述方法实际上并没有像预期的那样触发该方法,并且目标为 NULL(因为尚未设置第一响应者?)。但是可以直接发送消息,如下所示:

// Focus TextField
[textField becomeFirstResponder];

// Enable Continous Spelling
NSTextView *textView = (NSTextView *)[self.window firstResponder];
[textView setContinuousSpellCheckingEnabled:YES];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Mac OS X 上的 NSTextField 中启用拼写检查? 的相关文章

随机推荐

  • Eclipse android 项目不创建空白活动

    每次我创建一个新的 android 项目时 我都会指定要创建空白活动 我进入了我为其命名的页面 但是点击完成后 空白的Activity就找不到了 我知道我可以手动创建空白活动文件 但我想知道为什么 Eclipse 没有创建空白活动 即使它在
  • 传递父类作为参数?

    是否可以在创建实例之前不指定父类 例如像这样的东西 class SomeParentClass something class Child unspecifiedParentClass something instance Child So
  • php类中的回调函数

    由于某些原因 我们的托管公司使用 PHP 5 2 甚至没有预安装 mysqli 和 PDO 我别无选择 只能重写部分代码以使其兼容 5 2 所以 这是我的问题 在 PHP 5 2 中 不支持匿名函数 因此我做了以下测试以确保我正确更改了代码
  • iOS 使 UIImage 的一部分透明

    我有一个 UIImage 其中一部分已被用户选择清除 使其透明 为了进行选择 我使用了 NSBezierPath 如何在 iOS 中清除 使 UIImage 的部分透明 首先 我假设您有 UIBezierPath iOS 而不是 NSBez
  • PHP cURL HTTP 代码返回 0

    我不明白 当我 echo httpCode 时 我总是得到 0 当我将 html brand 更改为损坏的网址时 我期待 404 有什么我想念或不知道的吗 谢谢 check if url exist ch curl init curl se
  • 如何重新构建默认的“Launcher”应用程序?

    我的目标是修改Launcher应用程序并动态修改和更改主题 我在以下位置看到了几个 家庭 应用程序http www cyrket com p android com stain46 taghome 看来他们采用了默认的主页 启动器 并对其进
  • printf 中用星号填充?

    我已经搜索了高低 但在 C 中的 printf 中 似乎只有零填充和空白填充 我正在寻找自己的填充 在本例中使用星号 例如 假设宽度为8个字符 Input 123 Ouput 123 00 Input 3输出 3 00 我怎样才能做到这一点
  • Bash 中的嵌套函数调用

    现在 我正在尝试将一个 bash 函数调用嵌套在另一个函数调用中 以便一个函数的输出用作另一个函数的输入 是否可以像我在这里尝试那样在 bash 中嵌套函数调用 首先 我定义了这两个函数 returnSomething return 5 f
  • 使用ggplot2过度绘制分组箱线图中的平均点

    我有一个像这样的 ggplot2 分组箱线图 p lt qplot factor cyl mpg data mtcars geom boxplot fill factor gear 我想透支平均点 我试过这个 p stat summary
  • 如何在 iOS 中使用 3D 纹理?

    我找不到glTexImage3D OpenGL ES 2 0 中的 OpenGL 函数 那么如何使用 3D 纹理 例如 tga 文件 有人知道如何在 OpenGL ES 2 0 中使用 3D 纹理吗 OpenGL ES 1 x 和 2 x
  • 替换列表列表中的字符串

    我有一个字符串列表列表 例如 example string 1 a r ntest string string 1 test 2 another r ntest string 我想更换 r n 有一个空格 并去掉 在所有字符串的末尾 对于普
  • Haskell 库导入语法

    对于这个非常基本的问题抱歉 在 GHCi 中 两者之间有区别吗 import Library Name and m Library Name 它们看起来是等效的 但我认为使用替代语法是有原因的 你说得对import Module and m
  • 使用 XPath 和变量解析 lxml.html

    我有这个 HTML 片段 div h3 class toggle Table of Contents h3 div ul class toc li class level1 div class li a href section a div
  • JSP页面应该如何检查身份验证

    我是网络编程新手 我要求一种通用模式来执行诸如检查身份验证之类的操作 这是场景 该网站有一个供访问者登录的页面 它将获取用户名和加密密码并将其发送到服务器 然后从服务器获取错误代码 用户名 密码不匹配 或身份验证密钥 当用户登录成功时 我希
  • 当原始存储库不可用时,是否可以将默认存储库添加到 SLES?

    我有一个由不可用的人安装的 SLES 服务器 我查过 etc zypp repos d 有一个repo文件SUSE Linux Enterprise Server 11 SP4 11 4 4 1 109 repo 其内容是 SUSE Lin
  • Drive API 的 Google API OAuth 无法正常工作。出现错误:origin_mismatch

    我正在尝试运行 Google Drive 实时 API 的快速启动代码 我相信我做的一切都是对的 但我越来越 Error origin mismatch Request Details openid connect request true
  • 如何在 Mac OS X 上安装 libffi-dev

    我正在尝试在unix上实现micropython 这需要libffi dev 我是这样安装的brew install libffi dev 但好像没有找到libffi dev 有什么方法可以安装吗libffi dev在 Mac 操作系统上
  • 如何识别唯一用户?

    Question 如何确定用户是否是唯一的 我知道有很多方法可以使用 cookie 来执行此操作 但是不使用 cookie 的方法又如何呢 例如 转到城市词典并单击向上 向下投票按钮之一 即使您删除 cookie 并返回该页面 您也将无法对
  • ANTLRv4:非贪婪规则

    我正在阅读明确的 ANTLR4 参考文献 并对其中一个示例有疑问 第 76 页 STRING ESC fragment ESC 该规则与典型的 C 字符串匹配 包含在 其中可以包含 too 在我的预期中 规则STRING由于非贪婪构造 应该
  • 如何在 Mac OS X 上的 NSTextField 中启用拼写检查?

    我有一个 NSTextField 我想启用 键入时 拼写检查 当我加载应用程序时 我可以通过菜单栏 gt 编辑 gt 拼写和语法 gt 键入时检查拼写来执行此操作 我希望默认启用此选项 在 IB 中 我可以为 NSTextView 启用此功