Изменение цвета Курсора / Курсора UITextField и UITextView

мне интересно, как изменить цвет курсора / курсора в UITextFieldUITextView если это тот же ответ) в iOS. Я видел ответы для разработки OSX, но ничего для iOS.

это вообще возможно?

12 ответов


если вы нацелены на iOS 7+, это было сделано намного проще. Просто измените оттенок поля с помощью курсора с помощью внешнего прокси-сервера, и он будет применяться во всем приложении:

Swift 3.0:

UITextField.appearance().tintColor = .black 

Цель-C:

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

тот же ответ применяется для отдельного UITextView:

Swift 3.0:

myTextField.tintColor = .black 

С

[myTextField setTintColor:[UIColor blackColor]];

с iOS7 вы можете просто изменить оттенок textField


Swift 3:

  UITextField.appearance().tintColor = UIColor.black
  UITextView.appearance().tintColor = UIColor.black

Примечание: этот ответ устарел и должен использоваться только для разработки до iOS 7. Увидеть другие ответы на 1 решение через появление прокси в iOS 7.

Я пришел к этому вопросу после того, как столкнулся с той же проблемой в проекте, над которым я работал.

мне удалось создать решение, которое будет принято командой AppStore review, поскольку оно не использует существующие частные API.

Я создал элемент управления под названием DGTextField это расширяет UITextField.


yourTextField.tintColor = [UIColor whiteColor];

он работает, если вы установите его в коде, потому что как-то color trigger не делает этого в Построителе интерфейса (Xcode 6.1.1). Он хорошо подходит без необходимости менять какой-либо внешний вид прокси.


это сработало для меня в swift:

UITextField.tintColor = UIColor.blackColor()

вы также можете установить это в раскадровке: https://stackoverflow.com/a/18759577/3075340


более общим подходом было бы установить оттенок внешнего вида UIView.

UIColor *myColor = [UIColor purpleColor];
[[UIView appearance] setTintColor:myColor];

имеет смысл, если вы используете много элементов пользовательского интерфейса по умолчанию.


это возможно только при доступе к частной собственности и, следовательно,может привести к отклонению приложения Apple AppStore.

взгляните на этот вопрос Stackoverflow


попробуйте, это работает для меня.

[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] strong textforKey:@"insertionPointColor"];

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

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

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

для версии Interface Builder с Swift

@IBOutlet weak var tvValue: UITextView! {
        didSet {
            tvValue.tintColor = .black
        }
    }

если UITextField С UISearchBar затем сначала textField С searchBar и затем применить tintColor свойства:

let textFieldInsideSearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.tintColor = UIColor.lightGray