Цвет текста UITextView не устанавливается при отключенном выбираемом свойстве

Настройка:

У меня есть простое текстовое представление, добавленное в представлении на основе раскадровки, с выходом, взятым в файле .m viewcontroller. Я устанавливаю текст, используя его. например [_textViewOne setText:@"Test text"];. Я использую Xcode 6.1, компилируемый с iOS 8.1.

Сценарий:

Я хотел сделать UITextView не сенсорным, как и UILabel (я использую UITextView вместо UILabel, потому что мой текст может состоять из 1 или 2 строк, а UILabel выравнивает текст по вертикали по центру представления для 1 строки, а для 2 строк он начинается сверху слева, я хочу, чтобы он начинался сверху слева в обоих случаях, что легко достижимо с помощью textview).

Чтобы сделать его неприкасаемым, сначала я отключил его свойство selectable из раскадровки и попытался запустить приложение. После снятия отметки со свойства selectable текст моего текстового представления не использует цвет, который я для него установил (я установил красный цвет), и он использует черный цвет по умолчанию.

введите здесь описание изображения

Если я отмечу selectable, цвет текста будет соответствовать тому, что я установил в конструкторе интерфейса.

Проблемы:

  1. Почему снятие отметки со свойства selectable в построителе интерфейса не соответствует цвету текста, который я установил для textview.

  2. Еще одна вещь, которую я заметил: если я сниму отметку со свойства selectable в построителе интерфейса и попытаюсь установить его программно, как _textViewOne.selectable = YES;, тогда также TextView не будет следовать любому цвету текста, который я установил в построителе интерфейса, работает только проверка этого свойства из построителя интерфейса. (Пробовал с чистой сборкой, перезапуская xcode также)

(Я знаю, что я должен просто отключить взаимодействие с пользователем textview, чтобы сделать его недоступным для касания, но я случайно снял флажок selectable, и мне потребовалось время, чтобы понять, что происходит, поэтому просто хотел знать, делаю ли я что-то не так, или это какой-то проблема или это правильное поведение этого элемента управления.)


person Aditya Deshmane    schedule 28.12.2014    source источник
comment
В iOS есть ошибка: изменение текста также меняет цвет. Вам нужно изменить цвет текста после изменения текста, т.е. tv.text = @asd; tv.textColor = [UIColor любой].   -  person Borzh    schedule 30.05.2017


Ответы (3)


Похоже, эта ошибка была исправлена ​​в iOS 10.

Однако я был очень удивлен, когда увидел этот баг в нашем багтрекере и не могу воспроизвести на iOS 10, но успешно воспроизвел его на iOS9.

Решение в моем случае состояло в том, чтобы написать его в коде в следующем порядке:

textView.textColor = UIColor.red
textView.isSelectable = false

P.S.

textViewOne.userInteractionEnabled = false у меня не работает, потому что я хочу, чтобы текст можно было прокручивать, но без возможности выбора.

person Pavlo Shadov    schedule 17.10.2016
comment
это определенно странная ошибка! - person Fattie; 02.03.2017

Для отключения взаимодействия с textView (сделав его недоступным для касания) вы можете использовать:

_textViewOne.userInteractionEnabled = NO;
person Boaz Saragossi    schedule 28.12.2014
comment
Спасибо за ответ, Бен, но, как я уже упоминал в своем вопросе, я знаю решение, которое вы предоставили, мне нужны ответы на вопросы 1 и 2. - person Aditya Deshmane; 29.12.2014

Старый вопрос, но я только вчера столкнулся с этой проблемой. Этот вопрос и ответы помогли.

Однако, поскольку мой UITextView как в ячейке таблицы, isSelectable = false нельзя было использовать. Вот что сработало для меня:

  1. В раскадровке оставьте UITextView с отмеченным userInteractionEnabled.
  2. В коде установите UITextView textColor, затем используйте setUserInteractionEnabled:, чтобы установить его на NO

self.textView.textColor = [UIColor blackColor]; [self.textView setUserInteractionEnabled:NO];

Использование setUserInteractionEnabled: вместо .userInteractionEnabled, по-видимому, является той разницей, которая работает.

Надеюсь, это еще больше поможет всем, кто пытается поддерживать iOS 9.

person dredful    schedule 07.09.2017