Изменить цвет курсора в UITextField

Как изменить цвет курсора в моем UITextField?

Ответ 1

С iOS 7 вы можете просто изменить свойство tintColor для UITextField. Это повлияет как на цвет текстового курсора, так и на цвет выделения выделения текста.

Вы можете сделать это в коде...

textField.tintColor = [UIColor redColor];

... или в Interface Builder:

screenshot showing how to modify tint of a text field in interface builder

Вы также можете сделать это для всех текстовых полей в приложении с помощью прокси-сервера UITextField:

[[UITextField appearance] setTintColor:[UIColor redColor]];

Ниже приведены скриншоты симулятора, показывающие, как выглядит обычное текстовое поле iOS 7, при этом его оттенок установлен на красный.

Снимок экрана текстового курсора:

Text cursor screenshot

Снимок экрана выбора текста:

Text selection screenshot

Ответ 2

В iOS UITextfield имеет свойство textInputTraits. Одним из частных свойств UITextInputTraits является insertionPointColor.

Поскольку это недокументированное свойство, настройка пользовательского цвета, вероятно, заставит ваше приложение отклоняться из App Store. Если это не проблема, это должно работать:

[[addNewCategoryTextField textInputTraits] setValue:[UIColor redColor]
                                             forKey:@"insertionPointColor"];

Ответ 3

[[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"];

Ответ 4

Если вы разрабатываете Mac OS X, вы можете попробовать метод setInsertionPointColor:. Подробнее см. NSTextView.

Ответ 5

Подход Durgesh работает.

Я также использовал такие решения KVC много раз. Несмотря на то, что это кажется недокументированным, но оно работает. Честно говоря, вы не используете частные методы здесь - только кодирование ключевого значения, которое является законным.

Он сильно отличается от [addNewCategoryTextField textInputTraits].

P.S. Вчера мое приложение появилось в AppStore без каких-либо проблем с этим подходом. И это не первый случай, когда я использую KVC при изменении некоторых свойств только для чтения (например, navigatonBar) или личных ivars.