9

有谁知道将 NSScrollView 滚动到顶部的正确方法?我正在寻找与 UIView 的 scrollToTop 方法等效的方法。

这是我到目前为止所拥有的,但在所有情况下都不太正确

[self.contentView scrollToPoint:NSMakePoint(0, MAX(contentView.frameHeight, ((NSView*)self.documentView).frameHeight))];
4

4 回答 4

16

Swift 5更新:

如果您的文档视图被翻转:

scrollView.documentView?.scroll(.zero)

否则:

if let documentView = scrollView.documentView {
        documentView.scroll(NSPoint(x: 0, y: documentView.bounds.size.height))
}
于 2017-03-26T11:31:27.750 回答
9

终于想通了。奇迹般有效!

if ([self hasVerticalScroller]) {
    self.verticalScroller.floatValue = 0;
}

NSPoint newOrigin = NSMakePoint(0, NSMaxY(((NSView*)self.documentView).frame) - self.boundsHeight);
[self.contentView scrollToPoint:newOrigin];
于 2012-08-16T03:16:10.830 回答
5

这也很好用。设置 NSScrollView 的 documentView 的滚动点

NSPoint pt = NSMakePoint(0.0, [[self.scrollView documentView]
                               bounds].size.height);
[self.scrollView.documentView scrollPoint:pt];
于 2015-08-07T11:14:53.433 回答
1

转换为 Mac OS 的 Swift 时,之前的解决方案会滚动到底部。y 坐标方向在 Mac OS 和 iOS 上翻转。

Mac OS 的 Swift 3 解决方案:

scrollView.documentView?.scroll(NSPoint.zero)
于 2017-03-14T08:33:11.100 回答