【问题标题】:NSScrollView scroll is not scrolling?NSScrollView 滚动不滚动?
【发布时间】:2016-06-10 10:02:30
【问题描述】:

要显示 20 个按钮中的 8 个。但我不能滚动浏览其余部分?是否应该显示滚动条?

NSScrollView *nssvFonts = [[NSScrollView alloc] initWithFrame:CGRectMake(200, 200, 200, 400)];
[self.view addSubview:nssvFonts];

[nssvFonts.documentView setFrame: NSMakeRect(0,0,200, 400) ];
nssvFonts.hasVerticalScroller = YES;

for(int i = 0; i < 20; i++){
    NSButton *btnDown = [[NSButton alloc] initWithFrame:CGRectMake(0, 50 * i, 200, 50)];
    [nssvFonts addSubview:btnDown];
    [btnDown setButtonType:NSMomentaryPushInButton];
    [btnDown setTitle:[NSString stringWithFormat:@"Down: %d", i]];
}

所以我采纳了 Willeke 的建议并进行了添加和更改:

NSScrollView *nssvFonts = [[NSScrollView alloc] initWithFrame:CGRectMake(200, 200, 300, 400)];
[self.view addSubview:nssvFonts];

[nssvFonts.documentView setFrame: NSMakeRect(0,0,200, 1000)];
//[nssvFonts.contentView setFrame:NSMakeRect(0,  0, 200, 400)];
nssvFonts.hasVerticalScroller = YES;

for(int i = 0; i < 20; i++){
    NSButton *btnDown = [[NSButton alloc] initWithFrame:CGRectMake(50, 50 * i, 200, 50)];
    [nssvFonts addSubview:btnDown];
    [btnDown setButtonType:NSMomentaryPushInButton];
    [btnDown setTitle:[NSString stringWithFormat:@"Down: %d", i]];
}

但仍然没有显示垂直滚动条,我也无法使用鼠标滚动它...向下 1 个按钮或向下 2 个按钮以提供帮助。

【问题讨论】:

    标签: objective-c macos cocoa nsscrollview


    【解决方案1】:

    滚动视图会显示视图中因太大而无法在窗口中显示的部分内容,并允许用户在滚动视图中移动文档视图。

    换句话说:滚动视图显示其文档视图的一部分。如果文档视图与滚动视图大小相同,则它不会滚动。使文档视图足够大,以便所有按钮都适合。

    编辑:

    NSScrollView *nssvFonts = [[NSScrollView alloc] initWithFrame:NSMakeRect(200, 200, 300, 400)];
    [self.view addSubview:nssvFonts];
    
    NSView *documentView = [[NSScrollView alloc] initWithFrame:NSMakeRect(0, 0, 200, 1000)];
    nssvFonts.documentView = documentView;
    
    nssvFonts.hasVerticalScroller = YES;
    
    for(int i = 0; i < 20; i++) {
        NSButton *btnDown = [[NSButton alloc] initWithFrame:NSMakeRect(50, 50 * i, 200, 50)];
        [documentView addSubview:btnDown];
        [btnDown setButtonType:NSMomentaryPushInButton];
        [btnDown setTitle:[NSString stringWithFormat:@"Down: %d", i]];
    }
    

    【讨论】:

    • 应用了这个...但我可能遗漏了一些东西...我在上面添加了代码...thx
    • nssvFonts.documentView 为 nil,您将按钮添加到滚动视图而不是文档视图。我编辑了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多