滚动NSScrollView无法正常工作

时间:2014-02-18 07:23:05

标签: objective-c cocoa nstextview nsscrollview

我正在尝试使用以下代码将NSScrollView滚动到视图的底部:

NSPoint newScrollOrigin;
if ([[self.chatScreen documentView] isFlipped]) {
    newScrollOrigin=NSMakePoint(0.0,NSMaxY([[self.chatScreen documentView] frame])-NSHeight([[self.chatScreen contentView] bounds]));
} else {
    newScrollOrigin=NSMakePoint(0.0,0.0);
}
self.chatScreen.backgroundColor=[NSColor redColor];
[[self.chatScreen documentView] scrollPoint:newScrollOrigin];

来自这里:Apple doucmentation on scrolling

当我运行程序时,它会部分滚动到视图的底部,屏幕显示视图的顶部(默认起始位置),但是当我尝试滚动时,它会跳转到页面的底部,然后我可以正常滚动。

如果我滚动到视图的任何部分,下次它收到更新(触发它跳回到底部)时,看起来什么都没发生,直到你尝试滚动,这再次导致它跳转回到页面底部。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要滚动剪辑视图而不是文档视图 文档视图填写整个滚动视图,剪辑视图是一种覆盖层,可以围绕决定哪些部分可见。

[[self.chatScreen contentView] scrollToPoint:newScrollOrigin];

请注意scrollToPoint而非NSView的图层支持scrollPoint 滚动NSClipView之后,总是很好的做法,以反映ScrolledClipView,以便滚动条更新。

- (void)reflectScrolledClipView:(NSClipView *)aClipView;