16

UI要素が。である単一のビューがありUITextViewます。「viewDidLoad:Text\n」を使用して属性付き文字列を作成し、テキストビューの属性付きテキストを次のように設定します。

NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"Text\n"];  
[self.textView setAttributedText:string];

私の問題は、アプリを実行するときに改行が無視されることです。

を使用するNSStringと、setText:それは起こりません。

NSString *string = [[NSString alloc] initWithString:@"Text\n"];  
[self.textView setText:string];

誰かが何が起こっているのかを明らかにすることができますか?ドキュメントなどで何も見つからないようです。

4

2 に答える 2

3

以下を使用することをお勧めします:

[[NSAttributedString alloc] initWithHTML:[@"Text<BR />" dataUsingEncoding:NSUTF8StringEncoding] documentAttributes:NULL];

私はいつもこれを使っています、そしてそれは完璧に働きます。私もそれからマクロを作りました:

#define html2AttributedString(htmlString)                                                                   \
    [[[NSAttributedString alloc] initWithHTML:[(htmlString) dataUsingEncoding:NSUTF8StringEncoding]         \
    documentAttributes:NULL] autorelease]

次に、色、配置、フォントなどのマクロを作成できます…</ p>

"\n"つまり、文字列内のすべて<BR />を上記のコードに置き換えて使用する必要があります。交換部品には、以下を使用してください。

[yourString stringByReplacingOccurrencesOfString:... withString:…];

iOSの場合は、このページをチェックして、代替品を入手できます。

私たちのinitWithHTMLメソッドは、Macバージョンからの出力と完全に一致することを目的としています。これはキャラクターに対して達成することが可能であり、これが完璧であり続けることを確認するためのユニットテストを実施しています。属性に関しては、同じ外観を実現するためにiOSで少し異なる方法で実行する必要があることがたくさんあります。そこの詳細については気にしません。

于 2013-03-24T02:25:00.877 に答える