阻止用户手动滚动NSScrollview?

时间:2013-11-06 07:09:41

标签: objective-c macos cocoa nsscrollview

我正在使用NSScrollview以编程方式滚动。我隐藏了horizental和垂直滚动条,但用户仍然可以使用鼠标滚轮滚动。我想阻止这种手动滚动。

这就是我自动滚动的方式

- (IBAction)scrollToMidAnimated:(id)sender
{
    [NSAnimationContext beginGrouping];
    [[NSAnimationContext currentContext] setDuration:2.0];
    NSClipView* clipView = [self.scrollView contentView];
    NSPoint newOrigin = [clipView bounds].origin;
    newOrigin.y = [self.scrollView contentView].frame.size.height/2.0;
    [[clipView animator] setBoundsOrigin:newOrigin];
    [NSAnimationContext endGrouping];
}

它完美无缺,但我想阻止用户手动滚动(我只想以编程方式滚动)。有什么方法可以做到吗?

3 个答案:

答案 0 :(得分:4)

尝试这样创建自定义scrollview类,然后包含下面的代码: -

    - (void)scrollWheel:(NSEvent *)theEvent
    {
    [[self nextResponder] scrollWheel:theEvent];
     }

答案 1 :(得分:0)

终于得到了解决方案。我将UIScrollView子类化并覆盖其方法滚轮并将其留空。

- (void)scrollWheel:(NSEvent *)theEvent
{
    // Do nothing
}

答案 2 :(得分:0)

如果你确实隐藏了滚动条并阻止用户滚动,你确定首先想要NSScrollView吗?只需使用NSClipView和动画,就像你正在做的那样。无需子类化和覆盖scrollWheel:它更清洁简洁。