2012-10-02 58 views
2

我有一個NSScrollView在Mac應用程序,其中我迭代地添加(相同)添加填充子視圖。但是,當窗口出現時,滾動視圖的底部可見,但滾動條位於頂部。向上或向下滾動最初導致滾動視圖快速跳轉到一個位置,那麼它會smoothy滾動正常。此外,它似乎在底部添加了一個很大的空白空間,但這可能只是我的代碼。NSScrollView跳躍周圍,在底部

for (int i=0; i<[userList count]; i++) { ///user list is an array of ID strings 
    PaneViewController *pane = [[PaneViewController alloc] initWithNibName:@"PaneViewController" bundle:nil]; 
    [pane setPaneID:[userList objectAtIndex:i]]; 
    pane.view.frame = CGRectMake(0, (i*pane.view.frame.size.height), pane.view.frame.size.width, pane.view.frame.size.height); 
    [self.scrollView.contentView addSubview:pane.view]; 
} 
[self.scrollView.documentView setFrame:CGRectMake(0, 0, self.scrollView.frame.size.width, ([userList count])*125)]; /// 125 is the height of the paneView 
[self.scrollView.verticalScroller setFloatValue:0.0]; 

這表明當行

[self.scrollView.contentView addSubview:pane.view]; 

改爲

[self.scrollView.documentView addSubview:pane.view]; 

最後,雖然我沒有測試它,因爲意見是相同的相同的行爲,我的直覺告訴我說,這是要填補底部到頂部,即[userList objectAtIndex:0]將在列表的底部被分配到該視圖,因爲可可怪誕的座標系。這是真的嗎?如果是這樣,我該如何解決?

P.S. - 滾動視圖在界面生成器中設置,如果重要的話。此外,使用NSListView代替NSScrollView是不是一個真正的選項,有很多原因。

回答

0

  • 你在哪裏初始化上面的代碼?
  • 你有沒有試過setFlipped:YES或壓倒一切的isFlipped:和所有的自定義視圖返回YES
  • 替換您

    [self.scrollView.verticalScroller setFloatValue:0.0];

[self.scrollView reflectScrolledClipView:self.scrollView.contentView]; 
  • 你想子視圖添加到文檔視圖。
  • 您是否嘗試過在你的看法setAutoResizeMask?