NSScrollView如何工作?

1 macos cocoa

如何NSScrollView在mac应用程序中工作?我写了下面的代码,但滚动不起作用.

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];
Run Code Online (Sandbox Code Playgroud)

Dar*_*ust 20

我的可可有点生疏,但NSScrollView工作方式不同于UIScrollView.您不只是添加不适用的子视图NSScrollView.

您需要的是一个容器视图,您可以在其中添加所有子视图.因此,您创建了适当大小的NSView,并将所有视图添加到该容器视图中.然后你设置:

[myScrollView setDocumentView:myContainerView];
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参见" 滚动视图编程指南".