2013-03-24 15 views
15

UI要素がUITextViewの1つのビューしかありません。 viewDidLoad:で、私は、次のような「テキスト\ nを」と設定されたテキストビューの属性付きテキストを持つ属性付きの文字列を作成します。NSAttributedString ' n'は無視されました

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

私の問題は、私は、アプリケーションを実行すると改行が無視されていることです。

NSStringsetText:を使用しても発生しない場合

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

誰でも何が起こっているのかを見分けることはできますか?私はドキュメンテーションなどで何かを見つけることはできません。

答えて

5

あなたは、この使用することができます:あなたは2 NSAttributedString(文字列1と文字列2)を持っている場合あなたが行うことができますので、

NSAttributedString *cr = [[NSAttributedString alloc] initWithString: @"\n"]; 

を:

[string1 appendAttributedString: cr]; 
[string1 appendAttributedString: string2]; 

それは恐ろしいとエレガントではありません....しかし、できます!!!

+0

'NSAttributedString'は変更できないので、' appendAttributedString'を使用できません。 'NSMutableAttributedString'を正しく使用していますか? – Penguin

2

私はあなたが使用することをお勧めします:

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

を私はこのすべての時間を使用して、それは完璧に動作します。私もそれからマクロを作った:要するに

...

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

をそして、あなたは色、配置、フォントなどのためのマクロを作ることができ、あなたは自分の文字列内のすべての"\n"を交換する必要があります<BR />とし、上記のコードを使用してください。交換部品、使用する場合:iOS用

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

、あなたは彼らがあなたに交換を与えているthis pageをチェックアウトすることができます。

私たちのinitWithHTMLメソッドは、 Mac版からの出力を完全に一致させることを目的としています。これは文字のために実現することが可能であり、私は 単位テストを実施しており、これが確実に完璧であることを確認しています。 アトリビュートに関しては、同じ外観を達成するためにiOS上で少し異なる を実行する必要があります。私はそこに詳細を持って あなたを気にしません。

+1

「initWithHTML:」メソッドは、iOSでは使用できません。 – rmaddy

+0

右。投稿を編集して代用品を提供しました。 – Jean

+0

この時点で、なぜ私は期待された動作を得ていないのかを理解することにもっと関心がありますが、私はそれを回避しなければならない場合、このことを覚えておきます。 – winsome

関連する問題