如何使用NSScrollview?

has*_*o98 2 macos cocoa scroll objective-c

我无法弄清楚如何实际使用NSScrollview.我将滚动视图对象拖到NSWindow界面构建器中.然后我将一些拖动NSButtons到滚动视图上.我的问题是:

我如何实际向下滚动,例如,原始高度的2倍?

tor*_*ons 6

当然,用户可以使用他们的UI自动滚动.我假设你想要做的是以编程方式滚动.

一点背景:An NSScrollView有一个documentView,它是滚动视图显示的一部分的基础视图,以及a clipView,它是屏幕上显示的视图.因此剪辑视图就像是进入文档视图的窗口.要以编程方式滚动,请告诉文档视图在剪辑视图中滚动自身.

关于如何以编程方式滚动,有两个选项:

  • - (void)scrollPoint:(NSPoint)aPoint - 这会滚动文档,使给定点位于包围它的剪辑视图的原点.
  • - (BOOL)scrollRectToVisible:(NSRect)aRect - 这会将文档滚动到最小距离,以便可以看到整个矩形.注意:这可能根本不需要滚动,在这种情况下它返回NO.

因此,举例来说,这是Apple的Scroll View编程指南中有关如何滚动到文档视图底部的示例.假设您的nib文件中有一个IBOutlet被调用的scrollView连接,NSScrollView您可以执行以下操作:

- (void)scrollToBottom
{
    NSPoint newScrollOrigin;

    if ([[scrollview documentView] isFlipped]) {
        newScrollOrigin = NSMakePoint(0.0,NSMaxY([[scrollview documentView] frame])
                                       -NSHeight([[scrollview contentView] bounds]));
    } else {
        newScrollOrigin = NSMakePoint(0.0,0.0);
    }
    [[scrollview documentView] scrollPoint:newScrollOrigin];
}
Run Code Online (Sandbox Code Playgroud)