2013-03-24 32 views
15

Yalnızca UI öğesi UITextView olan tek bir görünüm var. viewDidLoad: ben gibi "Metin \ n" ve set metin görünümün atfedilen metinli bir atfedilen dize oluşturmak:NSAttributedString ' n' yoksayıldı

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

Sorunum app çalıştırdığınızda satır sonu gözardı olmasıdır.

NSString ve setText: kullanırsam, bu olmaz.

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

Olanlara biraz ışık tutabilir mi? Dokümantasyonda veya başka bir şekilde bir şey bulamıyorum.

cevap

5

Bunu kullanabilirsiniz:

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

iki NSAttributedString (dize1 ve dize2) sahip Yani eğer yapabilirsiniz:

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

Korkunç ve şık değil .... ama işe yarıyor!!!

+0

'NSAttributedString',' appendAttributedString' kullanamaz çünkü değiştirilemez. 'NSMutableAttributedString' doğru kullanım mı? – Penguin

2

Ben Kullanmak tavsiye ediyorum:

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

Bunu her zaman kullanmak ve mükemmel çalışıyor.

Kısacası

, sadece dizede tüm "\n" değiştirmeniz gerekiyor ...

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

Ve sonra, renk, hizalama, yazı tipi, vb makro yapabilirsiniz: Ben bile bunun dışında bir makro yapılmış <BR /> ile ve yukarıda verilen kodu kullanın. yedek parçası için, kullanın:

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

iOS için, onlar size bir yedek vermek hangi this page kontrol edebilirsiniz.

InitWithHTML yöntemlerimiz, çıktıyı Mac sürümünden mükemmel bir şekilde eşleştirmeyi amaçlıyor. Bu karakterler için elde etmek mümkün ve ben bu mükemmel kalmasını kesin hale birim testleri var. Özniteliklerle ilgili olarak, aynı görünüme ulaşmak için iOS'ta biraz farklı olan yapılması gereken pek çok şey var. Orada ayrıntılarla sizi rahatsız etmeyeceğim.

+1

‘initWithHTML:‘ yöntemi iOS'ta kullanılamaz. – rmaddy

+0

Sağ. Bir yazıyı sağlamak için yazıyı düzenledim. – Jean

+0

Bu noktada, beklenen davranışı neden almadığımı anlamaya çalışmaktan daha çok endişe duyuyorum, ancak bunun için uğraşmak zorunda kalırsam bunu aklımda tutacağım. – winsome