Изменение цвета Курсора / Курсора UITextField и UITextView
мне интересно, как изменить цвет курсора / курсора в UITextField
(и UITextView
если это тот же ответ) в 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]];
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.
попробуйте, это работает для меня.
[[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