3

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

这就是我进行自动滚动的方式

- (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];
}

它工作得很好,但我想阻止用户手动滚动(我只想以编程方式滚动)。有没有办法做到这一点?

4

3 回答 3

4

像这样尝试创建自定义滚动视图类,然后包含以下代码:-

    - (void)scrollWheel:(NSEvent *)theEvent
    {
    [[self nextResponder] scrollWheel:theEvent];
     }
于 2013-11-06T08:33:22.313 回答
0

终于得到了解决方案。我继承了 NSScrollView 并覆盖了它的方法滚轮并将其留空。

- (void)scrollWheel:(NSEvent *)theEvent
{
    // Do nothing
}
于 2013-11-06T08:05:13.107 回答
0

如果您确实隐藏了滚动条并阻止用户滚动,那么您确定要首先使用 NSScrollView 吗?就像你正在做的那样使用 NSClipView 和动画。无需继承和覆盖 scrollWheel:。它更干净简洁。

于 2013-11-06T14:17:04.543 回答