Изменить цвет курсора в UITextField - PullRequest
37 голосов
/ 03 февраля 2010

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

Ответы [ 6 ]

89 голосов
/ 12 сентября 2013

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

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

textField.tintColor = [UIColor redColor];

...

В Swift 4:

textField.tintColor = UIColor.red

... или в Интерфейсном Разработчике:

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

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

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

В Swift 4:

UITextField.appearance().tintColor = UIColor.red

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

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

Text cursor screenshot

Скриншот выделения текста:

Text selection screenshot

14 голосов
/ 25 ноября 2010

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

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

[[addNewCategoryTextField textInputTraits] setValue:[UIColor redColor]
                                             forKey:@"insertionPointColor"];
6 голосов
/ 05 июня 2013
[[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"];
2 голосов
/ 16 сентября 2013

Подход Дургеша работает.

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

Это резко отличается от [addNewCategoryTextField textInputTraits].

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

2 голосов
/ 03 февраля 2010

Если вы разрабатываете в Mac OS X, вы можете попробовать метод <a href="http://developer.apple.com/mac/library/documentation/Cocoa/Reference/ApplicationKit/Classes/NSTextView_Class/Reference/Reference.html#//apple_ref/occ/instm/NSTextView/setInsertionPointColor:" rel="nofollow noreferrer">setInsertionPointColor:</a>. Подробнее см. NSTextView .

0 голосов
/ 16 июля 2018

Чтобы изменить cursor color во всем приложении для UITextField/UITextView, внешний вид прокси также можно использовать, как показано ниже,

UITextField.appearance().tintColor = .green
UITextView.appearance().tintColor  = .green
...