web-dev-qa-db-ja.com

UITextView-XCode 5のiOS 6でフォントが設定されない

UIにストーリーボードを使用しています。以前はXCode 4.6を使用し、iOS 6でリリースしていました。それ以来、XCode 5を使用してiOS 7に更新し、XCode 5でうまく動作するようにストーリーボードを更新しました。

UITextViewは、コード内のフォントの変更を表示したくない。テキストの色の変更は正常に機能します。その他のプロパティの変更は問題ありません。フォントではありません。カスタムフォントを使用していたので、サイズが異なるさまざまなフォント(つまり、systemFontOfSize:)しかし、それはうまくいきませんでした。テキストビューのみは、ストーリーボードに設定されているフォントを表示します。ここで何が欠けているのでしょうか?この種のものを台無しにする自動レイアウトの制約はありますか?移行中に制約に関するいくつかの問題がありましたが、前述したように、フォントはiOS 7で正常に機能します。

ストーリーボードの何かが欠けていると思います。UIViewControllerを作成し、コードにテキストビューを追加すると、うまくいきます。

私はいくつかのコードを作成しましたが、この場合に役立つかどうかはわかりません。

65
Harry

この問題は、ストーリーボードでeditableプロパティがfalseになっていることが原因でした。これにより、フォントが変更されないままになった理由はまったくわかりません。iOS6でのみです。

55
Harry

さらに奇妙なことに、これはiPadではなくiPhoneでのみ発生します。

コードでフォントを設定していて、編集可能なテキストビューが必要ない場合は、次のようにします。

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

私の場合、UITextViewの「選択可能な」プロパティの問題です。

そこで、Storyboard EditorでUITextViewの「選択可能な」プロパティをチェックしてYESに設定しました To set selectable

その後、viewWillAppearでこのプロパティをNOに設定します。

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

私にとっては、UITextViewのテキストを設定し、フォントを設定した後(色と同じ)に機能します:

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

みんな答えてくれてありがとう。問題はまだiOS9に存在します。私が見つけたのは、Interface Builderで「ser Interaction Enabled = false」を設定すると、EditableおよびSelectableのままにできることです。 = trueユーザーはテキストビューを編集できません。

だから、私の解決策は次のとおりです。

  1. IBでser Interaction Enabled = Falseに設定
  2. IBでEditable = Trueに設定
  3. IBでSelectable = Trueに設定
  4. 任意の方法でテキストビューを構成します。
13
Flar

Swiftのコード:

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)
10
Esqarrouth

フォントサイズが無視されていることがわかりました。これは、選択可能(ストーリーボード内でUITextViewを選択した)というチェックボックスをオンにすることで解決しました。

7

この問題は、Interface BuilderでSelectableプロパティをFALSEに設定した場合にのみ発生します。

EditableおよびSelectableプロパティをFALSEに設定する必要がある場合は、Interface Builderではなく、CODEから実行してください。

要約すると、-編集可能および選択可能にする properties = [〜#〜] yes [〜#〜] in Interface BuilderプロパティをFALSEにする必要がある場合のコード:

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

お役に立てれば、

私のために働いた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
    }
}
1

他の人が述べたように:

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

p.s。isEditableはデフォルトでtrueであるため、最初にtrueとして設定する必要はありません。

0
Can

私の場合(Xcode 7.3、iOS 9で開発中)、

原因は、テキストとフォントファミリ/サイズを設定する順序であり、編集可能または選択可能な多くの回答のオプションではありません(そして、そのTextviewでxibというストーリーボードが表示されません)。

のように入力した場合

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

フォントのファミリーとサイズは変更されませんが、それ以外の場合、これら2つのステップを逆にすると機能します。テキストの設定は、フォントのファミリー/サイズの設定よりも先にする必要があります。

0