it-swarm.com.ru

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

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

37
monish

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

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

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

87
Cap

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

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

[[addNewCategoryTextField textInputTraits] setValue:[UIColor redColor]
                                             forKey:@"insertionPointColor"];
14
lemnar
[[self.searchTextField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] forKey:@"insertionPointColor"];
6
Durgesh

Если вы разрабатываете на Mac OS X, вы можете попробовать метод setInsertionPointColor:. Смотрите NSTextView ссылка для более подробной информации.

2
Laurent Etiemble

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

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

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

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

2
malex

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

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