Mac アプリに 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]
、Cocoas の風変わりな座標のために、これが下から上にいっぱいになる、つまり、リストの一番下のビューに割り当てられることを本能的に教えてくれます。システム。これは本当ですか? もしそうなら、どうすれば修正できますか?
PS - それが重要な場合、スクロール ビューは Interface Builder で設定されます。また、NSScrollView の代わりに NSListView を使用することは、いくつかの理由から実際にはオプションではありません。