2016-02-27 4 views
1

Восемь из 20 кнопок для отображения. Но я не могу прокрутить остальные? Должен ли показывать полоса прокрутки?Прокрутка NSScrollView не работает?

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

Так я применил совет Виллеке и сделал дополнения и изменения:

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 кнопки вниз, чтобы помочь.

ответ

2

Вид прокрутки отображает часть содержимого слишком большого изображения, которое будет отображаться в окне, и позволяет пользователю перемещать вид документа в прокрутке.

Другими словами: вид прокрутки отображает часть его вида документа. Если вид документа имеет тот же размер, что и прокрутка, он не будет прокручиваться. Сделайте вид документа достаточно большой, так что все кнопки будут вписываться в

Edit:.

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]]; 
} 
+0

применяется этот ... но я может быть что-то отсутствует ... Я добавил код, указанный выше ... ТНХ – jdl

+0

'nssvFonts.documentView' равен нулю, и вы добавляете кнопки в представление прокрутки вместо представления документа. Я отредактировал свой ответ. – Willeke

+0

thx ... У меня был другой взгляд, – jdl

Смежные вопросы