2010-08-25 19 views
5

Ho il seguente codice in un test di cacao applicazione stand-alone: ​​NSTextView all'interno di un NSScrollView non scorre :(

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    NSView *contentView = [window contentView]; 

    NSTextStorage *textStorage = [NSTextStorage new]; 
    NSLayoutManager *layoutManager = [NSLayoutManager new]; 
    NSTextContainer *textContainer = [NSTextContainer new]; 

    [textContainer setHeightTracksTextView:YES]; 
    [textContainer setWidthTracksTextView:YES]; 
    [textStorage addLayoutManager:layoutManager]; 
    [layoutManager addTextContainer:textContainer]; 

    NSScrollView *scrollView = [[NSScrollView alloc] initWithFrame:[contentView bounds]]; 
    [scrollView setHasVerticalScroller:YES]; 
    [scrollView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; 
    [scrollView setBorderType:NSNoBorder]; 

    NSRect textFrame; 
    textFrame.origin = NSZeroPoint; 
    textFrame.size = [NSScrollView contentSizeForFrameSize:[scrollView frame].size hasHorizontalScroller:NO hasVerticalScroller:YES borderType:NSNoBorder]; 

    NSTextView *textView = [[[NSTextView alloc] initWithFrame:textFrame textContainer:textContainer] autorelease]; 
    [textView setAutoresizingMask:NSViewWidthSizable]; 

    [scrollView setDocumentView:textView]; 

    [contentView addSubview:scrollView]; 
} 

Sto cercando di impostare tutta la gerarchia di oggetti coinvolti (tra cui il oggetti di sistema di testo) in una combinazione NSTextView + NSScrollView solo per vedere come funziona tutto insieme. Tuttavia quando eseguo questa operazione e inizio ad aggiungere un sacco di linee alla vista testo, non scorre quando il testo diventa più lungo della vista È come se NSScrollView e NSTextView non fossero a conoscenza l'un l'altro Quali connessioni mi mancano per ottenere tutto qui per comunicare correttamente?

EDIT: Sì, questo è leaky e brutto. :) Questo è stato scritto solo per cercare di determinare cosa sta succedendo qui, non il codice di produzione o qualcosa che userò direttamente mai più. Promettere.

risposta

4
+0

In effetti non l'ho fatto. E sembra che fosse la risposta. :) Grazie! – Sean

+0

That e -setHeightTracksTextView: necessario per essere NO. – Sean

+0

Sapevo * ne stavo dimenticando uno, ma non avevo tempo per una ricerca esaustiva. :-) –

Problemi correlati