UITextView - установка шрифта, не работающего с iOS 6 на XCode 5

Я использую раскадровки для своего пользовательского интерфейса. Ранее я использовал XCode 4.6 и был выпущен на iOS 6. С тех пор я обновил iOS 7 с помощью XCode 5 и обновил раскадровку, чтобы хорошо работать с XCode 5. У меня есть одна проблема:

UITextView не хочет отображать изменения шрифта внутри кода. Изменения цвета текста работают нормально. Любые другие изменения свойств в порядке. Шрифт, совсем нет. Я использовал пользовательский шрифт, поэтому я проверил разные шрифты разных размеров (т.е. systemFontOfSize:), но это не сработало. В текстовом представлении отображается только тот шрифт, который установлен в раскадровке. Что мне здесь не хватает? Существуют ли какие-либо ограничения автоматической компоновки, которые воюют с такими вещами? У меня было несколько проблем с ограничениями во время миграции, но, как я уже сказал, шрифты отлично работают в iOS 7.

Я предполагаю, что что-то в раскадровке мне не хватает, как будто я создаю UIViewController и добавляю текстовое представление в код, он отлично работает.

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

Ответ 1

Проблема была вызвана тем, что свойство editable было ложным в раскадровке. Я не знаю, почему это заставило шрифт оставаться неизменным - и только на iOS 6.

Ответ 2

Даже незнакомец, это происходит только на iPhone, а не на iPad.

Если вы устанавливаете шрифт в коде и не хотите редактируемого текстового представления, сделайте следующее:

textView.editable = YES;
textView.font = newFont;
textView.editable = NO;

Ответ 3

В моем случае это вопрос "выбираемого" свойства UITextView.

Итак, я проверил свойство "selectable" в UITextView в редакторе раскадровки, чтобы установить его YES To set selectable

а позже в viewWillAppear установите для этого свойства значение NO.

textview.text = @"some text";
textview.selectable = NO;

Ответ 4

Для меня это работает, если вы задаете текст своего UITextView и после установки шрифта (то же самое для цвета):

_myTextView.text = @"text";
[_myTextView setFont:[UIFont fontWithName:@"Helvetica Neue" size:18.0f]];
_myTextView.textColor = [UIColor whiteColor];

Ответ 5

Спасибо за ответы. Проблема все еще присутствует на iOS9. То, что я узнал, заключается в том, что когда вы устанавливаете " User Interaction Enabled = false" в Interface Builder, вы можете оставить Редактируемый и Выбираемый= true, и пользователь не сможет редактировать текстовое представление.

Итак, мое решение:

  • Установить Взаимодействие с пользователем включено = False в IB
  • Установите Редактируемый = True в IB
  • Установите Выбираемый = True в IB
  • Настройте текстовое представление любым способом.

Ответ 6

Код для быстрого:

textOutlet.editable = true
textOutlet.textColor = UIColor.whiteColor()
textOutlet.font = UIFont(name: "ArialMT", size: 20)
textOutlet.editable = false

Или, если вы сначала меняете текст, он волшебным образом решается

textOutlet.text = "omg lol wtf"
textOutlet.textColor = UIColor.whiteColor()
textOutlet.font = UIFont(name: "ArialMT", size: 20)

Ответ 7

Я обнаружил, что размер шрифта игнорируется. Это было разрешено, установив флажок: Selectable (выбрав UITextView в раскадровке)

Ответ 8

Эта проблема возникает только при установке свойства Selectable в FALSE в построителе интерфейса.

Если вам необходимо, чтобы свойства Editable и Selectable установлены в FALSE, сделайте это из CODE, а не в Interface Builder.

Подводя итоги, создайте редактируемые и выбираемые свойства = ДА в Конструкторе интерфейсов, а затем добавьте следующий код, если вам нужны свойства ЛОЖЬ:

_textView.editable   = NO;
_textView.selectable = NO;

Надеюсь, что это поможет,

Ответ 9

Модель Swift 3, которая работала для меня:

extension UITextView {
    func setFontAndUpdate(_ font: UIFont?) {
        self.font = font

        // Font doesn't update without text change
        let text = self.text
        self.text = nil
        self.text = text
    }
}

Ответ 10

В моем случае (разработка на Xcode 7.3, iOS 9),

Причиной был порядок установки текста и шрифта-семейства/размера, а не варианты редактируемого или выбираемого множества ответов. (и я не получаю никакой раскадровки, xib в этом Textview.)

Если я введу как

[myTextView setFont:[UIFont fontWithName:@"HelveticaNeue-Italic" size:20]];
myTextView.attributedText = mAttStr;

то семейство и размер шрифта не изменяются, но иначе когда я отменяю эти два шага, он работает. Настройка текста должна быть впереди установки семейства шрифтов/размера.

Ответ 11

Как упоминалось другими:

textView.font = UIFont.systemFont(ofSize: 16)
textView.isEditable = false

p.s. не нужно сначала устанавливать isEditable как true, так как он true по умолчанию: немного короче, немного приятнее