禁用Mac应用程序中的文本替换

时间:2015-09-27 19:27:31

标签: objective-c macos text replace

在用Objective-C编写的Mac OSX应用程序中禁用文本替换的步骤是什么?

我正在调试的应用程序正在使用大量的NSTextFields和
从我发现的NSTextFields似乎没有与NSTextViews相同的方法来禁用它:

  • setAutomaticQuoteSubstitutionEnabled:否
  • setAutomaticTextReplacementEnabled:否

虽然这是我试图在应用程序中的所有文本字段中实现的,但是为了使这个工作有什么过程? 请注意,用户无法在任何时候启用此功能,并且还应覆盖系统偏好设置中的全局设置 - >键盘 - >文本。

1 个答案:

答案 0 :(得分:0)

当文本字段具有键盘焦点时(当它是窗口的第一个响应者时),文本视图将添加到文本字段顶部的窗口并处理其编辑。此文本视图称为field editor

您可以在各种地方自定义字段编辑器。由于您有许多文本字段,因此您可能希望使用窗口委托方法-windowWillReturnFieldEditor:toObject:。它只需创建NSTextView,将其fieldEditor属性设置为true,将automaticTextReplacementEnabled设置为false,然后返回。它应该只在第一次请求时创建一次该对象,然后为所有调用返回它,以提高效率。

其他方法包括使用自定义NSWindow子类覆盖-fieldEditor:forObject:或使用自定义NSTextFieldCell类来覆盖-setUpFieldEditorAttributes: