Изменить цвет шрифта UITextView
У меня есть UITextView, где пользователь может вводить текст. Скажем, пользователь уже ввел значение. Как изменить цвет шрифта, который уже набрал текст и будущий текст, на другой, нажав кнопку?
Я уже настроил его, где я могу изменить цвет текста, но он работает только, если я выберу цвет ПЕРЕД тем, как я начну печатать. После того, как я начну печатать, и я пытаюсь изменить цвет, он ничего не делает.
У меня есть это:
-(IBAction)changeInkColor:(id)sender
{
[inkTextField setTextColor:[UIColor greenColor]];
[email protected]"text";
}
и это фактически работает и отображает "текст" зеленым цветом, только если в представлении нет текста. Однако, если я что-то набираю, а затем нажимаю эту кнопку, ничего не происходит.
Ответы
Ответ 1
Я просто попробовал это, и у меня не было проблем. Я установил кнопку, которая называлась [myTextView setTextColor:[UIColor redColor]];
После ввода текста с черным цветом, я нажал кнопку, и все стало красным. Затем я продолжал печатать, все в красном.
Используете ли вы setTextColor:
?
Ответ 2
В конце концов, setTextColor:
- это ответ, там есть важная деталь, отсутствующая в более ранних ответах: Чтобы заставить это работать в iOS 8, мне пришлось установить цвет = после = я установил текст.
Следовательно,
- (void)viewDidLoad
{
[super viewDidLoad];
_myTextView.textColor = [UIColor whiteColor];
_myTextView.text = @"yadda yadda yadda...";
// etc., snip
Работала НЕ, а
- (void)viewDidLoad
{
[super viewDidLoad];
_myTextView.text = @"yadda yadda yadda...";
_myTextView.textColor = [UIColor whiteColor];
// etc., snip
DID. Это поражает меня как ошибку в iOS 8, которую я напишу.
Ответ 3
Вы можете исправить это (по крайней мере, в Xcode 8.2) в IB, переключив кнопку textColor (6-я кнопка в строке). Если эта кнопка выбрана, если программный код textColor программный, прежде чем вводить текст в представлении, цвет будет "придерживаться". Я не нашел элегантный способ установить это на текстовом представлении программно.
![UITextView IB settings]()
Однако вы также можете обойти это в коде:
textView.text = @" ";
textView.textColor = UIColor.redColor;
textView.text = @"";
Ответ 4
У меня была такая же проблема, как у вас, тогда я понял, что текст не меняет цвет, и по умолчанию был красным, потому что я делал:
placeholder = @"Welcome";
вместо
WelcomeField.text = @"Welcome";
Надеюсь, что это поможет
Ответ 5
использовать атрибутный текст UITextField
NSAttributedString *string = [[NSAttributedString alloc]initWithString:self.textField.text attributes:@{NSForegroundColorAttributeName:color}];
self.textField.attributedText = string;