【问题标题】:NSScrollView scrollToTopNSScrollView 滚动到顶部
【发布时间】:2012-08-15 18:58:50
【问题描述】:

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

这是我目前所拥有的,但并非在所有情况下都完全正确

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

【问题讨论】:

    标签: nsscrollview scrolltop


    【解决方案1】:

    Swift 5 更新:

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

    scrollView.documentView?.scroll(.zero)
    

    否则:

    if let documentView = scrollView.documentView {
            documentView.scroll(NSPoint(x: 0, y: documentView.bounds.size.height))
    }
    

    【讨论】:

    • 第二个选项适用于 Catalina 10.15.5 和 swift 5.2
    【解决方案2】:

    终于想通了。像魅力一样工作!

    if ([self hasVerticalScroller]) {
        self.verticalScroller.floatValue = 0;
    }
    
    NSPoint newOrigin = NSMakePoint(0, NSMaxY(((NSView*)self.documentView).frame) - self.boundsHeight);
    [self.contentView scrollToPoint:newOrigin];
    

    【讨论】:

      【解决方案3】:

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

      NSPoint pt = NSMakePoint(0.0, [[self.scrollView documentView]
                                     bounds].size.height);
      [self.scrollView.documentView scrollPoint:pt];
      

      【讨论】:

        【解决方案4】:

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

        适用于 Mac OS 的 Swift 3 解决方案:

        scrollView.documentView?.scroll(NSPoint.zero)
        

        【讨论】:

        • 您的解决方案滚动到底部。也许你的视图坐标翻转了?
        • 啊,澄清一下。我的解决方案适用于 Mac OS。坐标在 iOS 上是翻转的,因此您可能希望在 iOS 上使用文档边界高度。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-10
        • 1970-01-01
        • 1970-01-01
        • 2017-01-22
        • 2011-04-02
        • 2010-10-18
        • 1970-01-01
        相关资源
        最近更新 更多