2012-10-02 42 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?