2010-08-25 11 views
5

Ich habe den folgenden Code in einem eigenständigen Cocoa Test-App:NSTextView innerhalb eines NSScrollView nicht bewegen :(

- (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]; 
} 

Ich versuche, die ganze Hierarchie von Objekten beteiligt einzurichten (einschließlich der Textsystemobjekte) in einer NSTextView + NSScrollView-Kombination, nur um zu sehen, wie alles zusammenarbeitet.Wenn ich dies jedoch ausführe und ein paar Zeilen zur Textansicht hinzufüge, scrollt es nicht, wenn der Text länger wird als die Ansicht Es ist so, als ob NSScrollView und NSTextView sich nicht bewusst sind. Welche Verbindungen vermisse ich, um hier alles richtig kommunizieren zu können?

EDIT: Ja, das ist undicht und hässlich. :) Dies wurde nur geschrieben, um herauszufinden, was hier vor sich geht, nicht Produktionscode oder irgendetwas, das ich jemals wieder verwenden werde. Versprechen.

Antwort

4

Haben Sie versucht, mit -setHorizontallyResizable: und -setVerticallyResizable: zu spielen?

+0

Tatsächlich tat ich nicht. Und es scheint, dass das die Antwort war. :) Vielen Dank! – Sean

+0

Das und -setHeightTracksTextView: NEIN erforderlich. – Sean

+0

Ich * wusste * Ich habe einen vergessen, hatte aber keine Zeit für eine erschöpfende Suche. :-) –

Verwandte Themen