Подтвердить что ты не робот

Изменить цвет шрифта UITextView

У меня есть UITextView, где пользователь может вводить текст. Скажем, пользователь уже ввел значение. Как изменить цвет шрифта, который уже набрал текст и будущий текст, на другой, нажав кнопку?

Я уже настроил его, где я могу изменить цвет текста, но он работает только, если я выберу цвет ПЕРЕД тем, как я начну печатать. После того, как я начну печатать, и я пытаюсь изменить цвет, он ничего не делает.

У меня есть это:

-(IBAction)changeInkColor:(id)sender
{
    [inkTextField setTextColor:[UIColor greenColor]]; 
    [email protected]"text";
}

и это фактически работает и отображает "текст" зеленым цветом, только если в представлении нет текста. Однако, если я что-то набираю, а затем нажимаю эту кнопку, ничего не происходит.

4b9b3361

Ответ 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;