2011-04-10 19 views
10

Çok satırlı NSTextField nasıl oluşturulur? UPDATE: "Sarma Metin Alanı" olarak adlandırılan IB özel tip NSTextField'de buldum. Çok satırlı ama yeni bir hat almak istediğimde Ctrl + Enter tuşlarına basmalıyım. Ancak sadece bir satırsonu almak için Enter tuşuna basmak istiyorum. Nasıl yapabilirim?Kakao: Çok satırlı NSTextField nasıl yapılır?

+4

sadece bir NSTextView kullanamazsınız: Burada

teknoloji nottan örnek temsilci mesajdır? Çok satırlı bir metin alanıdır. –

+0

Otomatik kısıtlamaları olan başka bir çözüm için cevabımı görebilirsiniz. [Https://stackoverflow.com/a/48705158/7677598](https://stackoverflow.com/a/48705158/7677598) – abdullahselek

cevap

11

Interface Builder sadece bu davranışını belirtmek için bir yolu yoktur görüntüleyebilir gibi içindekileri doldurmak için bunu yerine NSString bir NSAttributedString nesne vermek gerekir. Bu teknik not QA1454'da açıklandığı gibi bir delege mesajıyla yapabilirsiniz.

- (BOOL)control:(NSControl*)control textView:(NSTextView*)textView doCommandBySelector:(SEL)commandSelector 
{ 
    BOOL result = NO; 

    if (commandSelector == @selector(insertNewline:)) 
    { 
     // new line action: 
     // always insert a line-break character and don’t cause the receiver to end editing 
     [textView insertNewlineIgnoringFieldEditor:self]; 
     result = YES; 
    } 
    else if (commandSelector == @selector(insertTab:)) 
    { 
     // tab action: 
     // always insert a tab character and don’t cause the receiver to end editing 
     [textView insertTabIgnoringFieldEditor:self]; 
     result = YES; 
    } 

    return result; 
} 
6

Çok satırlı bir NSTextField sorta olan NSTextView'u kullanarak, NSText'un bir alt sınıfını hatalıyım. NSTextView, NSAttributedString'un bir alt sınıfı olan NSTextStorage sürümüne sahiptir. o vb renkler

[[yourTextView textStorage] setAttributedString:attrStr];