2015-09-27 2 views
0

Какова процедура отключения замены текста внутри приложения Mac OSX, написанного в Objective-C?Отключить замену текста в приложении Mac

приложение Я в настоящее время отладки используется много NSTextFields и
от того, что я узнал, NSTextFields, кажется, не имеют те же методы, как NSTextViews для отключения этого:

  • setAutomaticQuoteSubstitutionEnabled: нЕТ
  • не setAutomaticTextReplacementEnabled: нЕТ

Это хотя то, что я пытаюсь добиться для всех текстовых полей в приложении, так что такое procedur e, чтобы заставить это работать? Обратите внимание, что пользователь не должен иметь возможность включить это в любой момент, а также должен переопределять глобальные настройки в Системные настройки -> Клавиатура -> Текст.

+0

В основном то, что я пытаюсь достичь, чтобы переключить тот же метод, что и Edit- Замены - замена текста при запуске приложения. –

ответ

0

Когда текстовое поле имеет фокус клавиатуры (когда это первый ответчик окна), в окно над текстовым полем добавляется текст . добавляется в окно и обрабатывает его. Это текстовое представление называется field editor.

Существуют различные места, где вы можете настроить редактор полей. Поскольку у вас много текстовых полей, вы можете использовать метод делегирования окна -windowWillReturnFieldEditor:toObject:. Он может просто создать NSTextView, установить для свойства fieldEditor значение true, установить automaticTextReplacementEnabled на false и вернуть это. Вероятно, он должен создать этот объект только один раз, при первом запросе, а затем вернуть его для всех вызовов, для повышения эффективности.

Других подходов включают использование пользовательских NSWindow подкласса, который подменяет -fieldEditor:forObject: или с помощью пользовательского класса NSTextFieldCell для текстовых полей, которые приоритетны -setUpFieldEditorAttributes: