在用Objective-C编写的Mac OSX应用程序中禁用文本替换的步骤是什么?
我正在调试的应用程序正在使用大量的NSTextFields和
从我发现的NSTextFields似乎没有与NSTextViews相同的方法来禁用它:
虽然这是我试图在应用程序中的所有文本字段中实现的,但是为了使这个工作有什么过程? 请注意,用户无法在任何时候启用此功能,并且还应覆盖系统偏好设置中的全局设置 - >键盘 - >文本。
答案 0 :(得分:0)
当文本字段具有键盘焦点时(当它是窗口的第一个响应者时),文本视图将添加到文本字段顶部的窗口并处理其编辑。此文本视图称为field editor。
您可以在各种地方自定义字段编辑器。由于您有许多文本字段,因此您可能希望使用窗口委托方法-windowWillReturnFieldEditor:toObject:
。它只需创建NSTextView
,将其fieldEditor
属性设置为true,将automaticTextReplacementEnabled
设置为false,然后返回。它应该只在第一次请求时创建一次该对象,然后为所有调用返回它,以提高效率。
其他方法包括使用自定义NSWindow
子类覆盖-fieldEditor:forObject:
或使用自定义NSTextFieldCell
类来覆盖-setUpFieldEditorAttributes: