我正在尝试使用以下代码将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
当我运行程序时,它会部分滚动到视图的底部,屏幕显示视图的顶部(默认起始位置),但是当我尝试滚动时,它会跳转到页面的底部,然后我可以正常滚动。
如果我滚动到视图的任何部分,下次它收到更新(触发它跳回到底部)时,看起来什么都没发生,直到你尝试滚动,这再次导致它跳转回到页面底部。
提前致谢。
答案 0 :(得分:0)
您需要滚动剪辑视图而不是文档视图 文档视图填写整个滚动视图,剪辑视图是一种覆盖层,可以围绕决定哪些部分可见。
[[self.chatScreen contentView] scrollToPoint:newScrollOrigin];
请注意scrollToPoint
而非NSView的图层支持scrollPoint
滚动NSClipView之后,总是很好的做法,以反映ScrolledClipView,以便滚动条更新。
- (void)reflectScrolledClipView:(NSClipView *)aClipView;