Работа с курсором в NSTextField Objective C — Xcode Mac OS

Как изменить цвет курсора для NSTextField

Данный способ изменения цвета курсора для редактора полей не требует создания подкласса. Все работает в основном классе. Но у данного ниже способа есть один недостаток. Редактор полей - это один объект NSTextView, который является общим для всех текстовых полей в окне. Редактор полей совместно используется всеми элементами управления в окне для редактирования текста. Поэтому цвет курсора изменится сразу для всех полей. Чтобы установить свой цвет для каждого отдельного поля, необходимо создавать подкласс для NSTextField.

Итак. На самом деле NSText *, возвращаемый currentEditor для NSTextField, всегда является NSTextView *. Поэтому вы можете получить доступ к редактору полей используя метод экземпляра fieldEditor:forObject: через любой существующий объект текстового поля. Данный код необходимо размещать в viewDidAppear.

// Изменить цвет курсора для всех полей.
NSTextField* textField = currTextField;
NSColor *insertionPointColor = [NSColor redColor];
NSTextView *fieldEditor = (NSTextView*)[textField.window fieldEditor:YES forObject:textField];
fieldEditor.insertionPointColor = insertionPointColor;

Вариант в одну строку

// Изменить цвет курсора для всех полей
[(NSTextView*)[currTextField.window fieldEditor:YES forObject:currTextField] setInsertionPointColor:[NSColor blueColor]];

 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *