Наконец-то я решил проблему. Я создал NSView (назовем его documentContentView), добавил мой NSTableView как подвид этого documentContentView, то я добавил documentContentView к documentView в Scrollview в:
NSTableView *docView = (NSTableView *)self.scrollView.documentView;
id newClipView = [[CustomClipView alloc] initWithFrame:[self.scrollView.contentView frame]];
[self.scrollView setContentView:(NSClipView *)newClipView];
[newClipView setDrawsBackground:NO];
NSView *documentContentView = [[NSView alloc] initWithFrame:docView.bounds];
docView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
[documentContentView addSubview:docView];
[self.scrollView setDocumentView:documentContentView];
[self.scrollView setDrawsBackground:NO];
я создал свой собственный NSClipView под названием CustomClipView (на основе этой статьи http://www.cocoadev.com/index.pl?CenteringInsideNSScrollView), и этот подкласс задает начало documentContentView при изменении размера окна. Я также подклассифицировал свой табличный вид, а в методе -reloadData я могу изменить размер документаContentView, когда tableview изменит его содержимое.
Скорее всего, я не понял ответа. Я перезаписал метод -frame моего подкласса tableview: - (NSRect) frame { NSRect aFrame = [super frame]; NSRect newFrame = NSMakeRect (0, 0, aFrame.size.width + 20, aFrame.size.height + 20); новыйFrame.origin.x = -10; newFrame.origin.y = -10; return newFrame; } Это почти работает, но, к сожалению, правая сторона таблицы не видна в scrollview, и кажется, что scrollview не справляется с моими изменениями должным образом, потому что, если нижняя половина строки выходит из видимой области, правый скроллер не появляется автоматически. – vbali
У меня нет времени, чтобы объяснить это подробно вам прямо сейчас, но, пожалуйста, посмотрите 'UIScrollView.contentSize', чтобы сообщить scrollView, насколько велик его контент. Кроме того, в вашем newFrame размеры должны быть -20, а не +20. Также обратите внимание, что обычно «NSTableView» прокручивает сам по себе, если это необходимо (вы можете видеть в документах, что это подкласс UIScrollView); нет необходимости обертывать его в scrollView, если вы не хотите ничего экстраординарного. – fzwo
К сожалению, contentSize NSScrollView является свойством только для чтения. Я перезаписал аксессуар -contentSize моего подкласса NSScrollView и вернул frame.size его documentView, но он не работает :(Я прочитал всю документацию NSScrollView, NSTableView и NSClipView, но я до сих пор не понимаю как я мог сделать это с помощью этой простой задачи. – vbali