2011-04-27 38 views
1

NSScrollView在mac應用程序中的工作原理?我寫了下面的代碼,但滾動不起作用。NSScrollView如何工作?

NSDictionary *temp=[[ NSDictionary alloc] init ]; 
NSScrollView *scroll = [[NSScrollView alloc ] initWithFrame:CGRectMake(0, 0, 100, 100)];  
NSArray *dicArray=[NSArray arrayWithObjects:dict,dict1,dict2,dict3,dict4, nil]; 

for (int i=0; i<[dicArray count]; i++) 
{ 
    int offset=100; 
    int x=10; 
    int y=20; 
    y=y+(i*offset); 
    temp= [dicArray objectAtIndex:i]; 

    NSRect titleRect=NSMakeRect(x,y,100,30); 
    NSRect subtitleRect=NSMakeRect(x, y+20, 400, 20); 

    NSTextField *title=[[NSTextField alloc] initWithFrame:titleRect]; 

    [[title cell] setStringValue:[temp objectForKey:key]]; 

    [[title cell] setWraps:NO]; 
    [[title cell] setScrollable:YES]; 
    [[title cell] setEditable:NO]; 
    [[title cell] setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSMinusSetExpressionType]]]; 
    [title setDrawsBackground:NO]; 
    [title setBordered:NO]; 

    NSTextField *subtitle=[[NSTextField alloc] initWithFrame:subtitleRect ]; 
    [[subtitle cell] setStringValue:[temp objectForKey:subkey]]; 
    [[subtitle cell] setWraps:NO]; 
    [[subtitle cell] setScrollable:YES]; 
    [[subtitle cell] setEditable:NO]; 
    [[subtitle cell] setFont:[NSFont systemFontOfSize:[NSFont  systemFontSizeForControlSize:NSMiniControlSize]]]; 
    [subtitle setDrawsBackground:NO]; 
    [subtitle setBordered:NO]; 
    [scroll addSubview:title]; 
    [scroll addSubview:categoryOkButton]; 
    [scroll addSubview:subtitle]; 


} 
[[self window] setContentView:scroll]; 
[scroll release]; 

回答

19

我的可可有點生疏,但NSScrollView作品比UIScrollView不同的方式。您不只是添加子視圖,不適用於NSScrollView

您需要的是一個容器視圖,您可以在其中添加所有子視圖。因此,您可以創建適當大小的NSView並將所有視圖添加到該容器視圖。然後設置:

[myScrollView setDocumentView:myContainerView]; 

有關詳細信息,請參閱Scroll View Programming Guide