如何禁用NSScrollView的垂直滚动?

时间:2012-03-21 08:45:55

标签: objective-c cocoa

如何禁用NSScrollView的垂直滚动?

我无法在Google上找到快速解决方案。

由于

3 个答案:

答案 0 :(得分:1)

我喜欢伊万的答案。但是,在我的特定情况下,我有一个表视图(垂直滚动),其中每行包含一个集合视图(水平滚动)。

当用户尝试向上/向下滚动时,如果鼠标悬停在其中一个集合视图上,则无法向上或向下滚动。

为了解决这个问题,我将包含NSCollectionViews的NSScrollView子类化,并使用以下代码覆盖了此方法:

override func scrollWheel(with event: NSEvent)
{
    if (fabs(Double(event.deltaY)) > fabs(Double(event.deltaX))) {
        self.nextResponder?.scrollWheel(with: event);
    } else {
        super.scrollWheel(with: event);
    }
}

这样,它会检查用户是否主要在一个方向上滚动并正确处理它。

答案 1 :(得分:0)

您可以在scrollViewDidScroll:中观察内容偏移量,并将x值设置为您喜欢的值。

编辑: 那好吧。你见过这个:Constraining Scrolling

答案 2 :(得分:-7)

想知道你是否遇到过

- (void)setHasVerticalScroller:(BOOL)flag;

禁用垂直滚动条?

您也可以在Interface Builder中设置它。